当前位置: 首页 > news >正文

2025-11-07 ZYZ28-NOIP模拟赛-Round3 hetao1733837的record

比赛链接:ZYZ28-NOIP模拟赛-Round3

比赛背景

在数字王国的深处,住着四位性格迥异的骑士。他们并非挥舞刀剑的战士,而是掌握着独特法则的守护者。XOR骑士身披流光溢彩的斗篷,手握一把名为“异或”的双刃剑。这把剑有个奇妙的特性:当它同时触及两个相同的数字时,力量会相互抵消,归于虚无;而面对不同的数字时,却能迸发出全新的能量。他守护着“平衡法则”,最擅长在错综复杂的迷宫中,找出那条独一无二的路径,让所有干扰项彼此湮灭,只留下唯一的真相。Trip骑士是位永不停歇的旅人,他的地图上标记着王国里所有城市间最隐秘的捷径。他坚信,两点之间,最短的不仅是直线,更是最优美的连接。当王国因暴雨冲毁道路而陷入混乱时,总能看见他忙碌的身影,运用“Floyd的智慧”或“Dijkstra的指引”,为每一段中断的旅程重新编织出最有效的网络。Distance骑士则是一位冷静的观测者,他的双眼能瞬间测算出万物间的“曼哈顿距离”。在他的世界里,两点间的远近,并非直线衡量,而是横平竖直的步数总和。他守护着王国的坐标网格,任何两点间的位移,在他眼中都化为 |x₁ - x₂| + |y₁ - y₂| 的绝对准则,简洁而严谨。而Chess骑士,是黑白格战场上的战略家。他的每一步都关乎王国的运势,深谙“王车易位”的时机,预判“马步奇袭”的落点。他在64格的宇宙里推演着无限可能,每一次落子,都是逻辑与远见的交响。

这四位骑士各司其职,维持着数字王国的秩序与平衡,直到“混沌侵蚀”的到来——

那是一片无声无息蔓延的黑暗,能扭曲规则,混淆路径,让距离失去意义,使棋局陷入死局。王国边境的“异或迷宫”最先告急:路径在虚实间闪烁,钥匙在真伪间变幻。XOR骑士踏入迷宫,他的剑锋划过空中,相同的幻象在剑刃下如泡沫般破灭,不同的真相在碰撞中显形。他并非与怪物搏斗,而是与混乱的逻辑本身交锋,最终,他在所有交织的可能性中,找到了那条让所有干扰项自我抵消的、唯一真实的路径,稳住了迷宫的核心。然而,混沌的触角已伸向王国的交通脉络。“千桥之城”的通道接连断裂,Trip骑士的地图瞬间作废。他没有惊慌,而是将破碎的路径视为新的拼图。他运用“动态规划”的时光沙漏,推演着每一段修复的次序;借助“优先队列”的灵雀,探寻着未被封锁的迂回之路。他计算的不是一步,而是百步之后的全局,最终为王国重新编织了一张虽曲折但畅通的生命线。与此同时,Distance骑士发现王国的空间结构正在坍缩,标准的坐标网格开始扭曲。他登上最高的观测塔,双眼化为精密的标尺。当混沌试图将两点间的定义模糊时,他高声吟诵法则:“纵有万千幻象,两点间距,永为横纵坐标差之绝对和!”他的意志加固了现实,扭曲的空间在坚定的法则面前逐渐恢复平直。最后的决战,在Chess骑士的棋盘上展开。混沌本身坐在了他的对面,每一步都散发着令人绝望的气息。Chess骑士凝视着棋局,他看到了十步、二十步之后的无数分支。他放弃了局部的缠斗,将一个个棋子视为整体布局的节点。他的“王”看似退避,实则引导;他的“车”固守要道,以静制动。他并非在赢下每一步,而是在规划整个棋局的终末形态。当混沌发动总攻的瞬间,才发现自己的攻势早已落入一个精心布置了数十回合的陷阱之中——一步看似平常的落子,激发了之前所有铺垫的连锁反应,如同推倒了第一张多米诺骨牌。混沌在绝对的计算与远见面前,彻底溃散。

晨光重现,数字王国恢复了往日的秩序。

四位骑士站在王宫之巅,眺望着他们共同守护的世界。
XOR的剑锋依旧闪烁着辩证的光芒,Trip的地图增添了新的路径,Distance的坐标轴坚不可摧,Chess的棋盘上,残局记录着那场智慧的胜利。他们明白,混沌从未真正消失,挑战必将换以新的形式归来。但只要逻辑依然清晰,路径始终连通,距离保有定义,策略存乎一心,那么,无论面对何种侵蚀,数字王国的法则就将永存。

而这,便是属于四位骑士的,永恒的童话。

呃,DeepSeek写长了qwq……

A.xor

原题链接:题目详情 - 03-A - ZYZOJ

题面

给定长为n的序列a,求有多少四元组(i,j,k,l)满足1\leq i<j<k<l\leq n,a_i\bigoplus a_j\bigoplus a_k\bigoplus a_l = 0,其中\bigoplus表示按位异或。

分析

没啥可分析的。既然四元组不好整,那就劈开,分两边,加个cnt数组统计一下,没了……

正解

#include <bits/stdc++.h>
using namespace std;
const int N = 1 << 20;
int n, a[5005];
long long cnt[N];
int main(){freopen("xor.in", "r", stdin);freopen("xor.out", "w", stdout);cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];}long long ans = 0;for (int k = 1; k <= n; k++){for (int l = k + 1; l <= n; l++){int tmp = a[k] ^ a[l];ans += cnt[tmp];}for (int i = 1; i < k; i++){int tmp = a[i] ^ a[k];cnt[tmp]++;}}cout << ans;return 0;
}

B.trip

原题链接:题目详情 - 03-B - ZYZOJ

题面

题目描述

小 Z 决定前往比特国来一次自驾游,一边旅行一边欣赏风景。

比特国有n个城市,编号1,2,...,n,由m条单向的公路连接。第i条公路从a_i个城市出发,前往b_i个城市,路程是d_i米。

小 Z 决定从S号城市出发,最终到达T号城市(保证S\neq T),并且你的车子初始速度v1米每秒。

全国共有p(0\leq p\leq n)个维修站,第i个位于x_i个城市,小 Z 可以停留在这花c_i秒的时间将车升级,使得车速翻倍。小 Z 可以在某个维修站将车升级多次,但每次升级都会花c_i秒的时间。例如,假设小 Z 当前的车速为v,并且恰好在第x_i个城市,那么他可以在第i个维修站花3c_i的时间将车升级三次,使得车速变为2 \times 2 \times 2 \times v = 8v

假设小 Z 的车速是v米每秒,那么安全通过一条长度为d米的公路所需的时间为\lceil \frac{d}{v} \rceil秒(\lceil x \rceil代表最小的不小于x的整数)。然而,有些公路是平整的,而另一些则是坑坑洼洼的。每当小 Z 通过一条坑坑洼洼的路,车的所有升级都会损耗,通过这条路之后车速会立即变回1米每秒(但在通过这条路的过程中车速不会改变)。

现在小 Z 想知道,他到达T号城市最少需要花多少秒?

输入格式

trip.in文件读入数据。

第一行四个整数n,m,S,T,代表城市个数,道路条数,起点城市编号,终点城市编号。

接下来 m 行,每行三个整数a_i,b_i,d_i和一个字符ch(只会是 G 或 B),描述第 i 条道路从第a_i个城市出发,前往第b_i个城市,路程是d_i 米,路况是ch。如果ch是 G 代表这条公路是平整的,否则是坑坑洼洼的。

接下来一行一个整数 p,代表维修站的个数。

接下来 p 行,每行两个整数x_i,c_i,代表第 i 个维修站在第x_i个城市,升级一次需要花c_i秒。

输出格式

输出到trip.out文件。

输出一个整数,代表小 Z 到达 T 号城市所需的最少秒数。如果小 Z 无法到达 T 号城市,输出-1

分析

简单的分层图板子,最多评绿,上午封装了一车结构体,吃吐了,放弃了。没啥可说的,代码能力稀碎,再不引起重视,NOIP让你坐下!

正解

#include<bits/stdc++.h>
using namespace std;
struct edge{int to, nxt;long long w;
}e[2000010];
int head[420010], cnt = 1;
void addedge(int x, int y, long long w){e[cnt] = {y, head[x], w};head[x] = cnt++;
}
int n, m, S, T, adt;
struct node{int x;long long v;bool operator<(const node&_Q) const{return v > _Q.v;}
};
priority_queue<node> q;
long long d[420010];
bool vis[420010];
void dijkstra(){memset(d, 0x3f, sizeof d);q.push({S, 0});d[S] = 0;while (!q.empty()){node fr = q.top();q.pop();int x = fr.x;if (vis[x]) continue;vis[x] = 1;for (int i = head[x]; i; i = e[i].nxt){int y = e[i].to;if (d[y] > d[x] + e[i].w){d[y] = d[x] + e[i].w;q.push({y, d[y]});}}}
}
int main(){freopen("trip.in","r",stdin);freopen("trip.out","w",stdout);ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n >> m >> S >> T;for (int i = 1; i <= m; i++){int x, y, w;cin >> x >> y >> w;char c;cin >> c;if (c == 'G') for (int j = 0; j <= 20; j++) addedge(j * n + x, j * n + y, (w + (1 << j) - 1) / (1 << j));else for (int j = 0; j <= 20; j++) addedge(j * n + x, y, (w + (1 << j) - 1) / (1 << j));}cin >> adt;for (int i = 1; i <= adt; i++){int x;long long w;cin >> x >> w;for (int j = 0; j < 20; j++) addedge(j * n + x, (j + 1) * n + x, w);}dijkstra();long long ans=0x3f3f3f3f3f3f3f3f;for (int j = 0; j <= 20; j++) ans = min(ans, d[j * n + T]);if (ans == 0x3f3f3f3f3f3f3f3f) cout << -1;else cout << ans;return 0;
}

好吧,he的AeeE5x的。

C.chess

原题链接:题目详情 - 03-C - ZYZOJ

题面

分析

f_{i,j,k}表示现在在(i,j)位置,已经走了k步,从前面状态转移。马和象好整,车记录一下每行和每列的和即可快速查找。将可以转移的位置建图连边,邻接矩阵快速幂即可。

he了题解qwq……不会邻接矩阵快速幂qwq……

正解

花花的code!

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=110,mod=19260817;
int q,a[8][2]={{-2,-1},{-1,-2},{2,1},{1,2},{-2,1},{1,-2},{-1,2},{2,-1}},b[4][2]={{2,-2},{-2,2},{2,2},{-2,-2}},w[N][N],v[N],n,m;
int id(int x,int y){return (x-1)*m+y;
}
int ksm(int x,int y){int sum=1;while(y){if(y&1) sum=sum*x%mod;x=x*x%mod;y>>=1;}return sum;
}
void mul(){int c[N][N]; for(int i=1;i<=n*m;i++) for(int j=1;j<=n*m;j++) c[i][j]=0;for(int k=1;k<=n*m;k++) for(int i=1;i<=n*m;i++) for(int j=1;j<=n*m;j++) c[i][j]=(c[i][j]+w[i][k]*w[k][j]%mod)%mod;for(int i=1;i<=n*m;i++) for(int j=1;j<=n*m;j++) w[i][j]=c[i][j];
}
void upd(){int a[N];for(int i=1;i<=n*m;i++) a[i]=0;for(int i=1;i<=n*m;i++) for(int j=1;j<=n*m;j++) a[i]=(a[i]+v[j]*w[j][i]%mod)%mod;for(int i=1;i<=n*m;i++) v[i]=a[i];
}
void ksm(int y){while(y){if(y&1) upd();mul();y>>=1;}
}
signed main(){freopen("chess.in","r",stdin);freopen("chess.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>q;while(q--){for(int i=1;i<=n*m;i++) for(int j=1;j<=n*m;j++) w[i][j]=0;for(int i=1;i<=n*m;i++) v[i]=0;int op,x,y,t;cin>>op>>n>>m>>x>>y>>t;if(op==0){cout<<ksm(n+m-2,t)<<"\n"; continue;}else if(op==1){for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int k=0;k<8;k++){int v=i+a[k][0],u=j+a[k][1];if(v>=1&&v<=n&&u>=1&&u<=m) w[id(i,j)][id(v,u)]=1; }}}} else{for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int k=0;k<4;k++){int v=i+b[k][0],u=j+b[k][1];if(v>=1&&v<=n&&u>=1&&u<=m) w[id(i,j)][id(v,u)]=1;}}}}v[id(x,y)]=1;ksm(t);int ans=0;for(int i=1;i<=n*m;i++) ans=(ans+v[i])%mod;cout<<ans<<"\n"; }return 0;
}

D.distance

原题链接:题目详情 - 03-D - ZYZOJ

题面

分析

全是he的qwq……

http://www.dtcms.com/a/583354.html

相关文章:

  • 零知IDE——STM32F407VET6驱动SHT40温湿度传感器与ST7789实现智能环境监测系统
  • 中国人做的比较好的shopify网站公司网页怎么关闭
  • 大语音模型有什么作用和特点
  • 网站建设公司的市场定位专业的移动网站建设公
  • wordpress 选择插件南昌网络排名优化
  • wordpress 注册 密码专业搜索引擎seo公司
  • mipi dsi图像
  • 网站开发合作意向协议书房产信息网网站
  • 企业管理网站建设wordpress 熊掌
  • 深度学习入门:基于Python的理论与实现(理论研究)
  • 网站开发合同样本兴义网站建设网站建设
  • 网站的常用建设技术有哪些网站建设义乌
  • 360元网站建设链接搜索引擎
  • Visual Studio Installer Projects 打包msi程序
  • 如何自己做网站站长廊坊关键词排名
  • 哪里做网站比较号万江区网站建设公司
  • 金州网站建设做网站字体要求
  • 三维技术 + AI 动画,焕活古镇科技人文新表达,天南文化助力 2025 年世界互联网大会乌镇峰会
  • linux服务-Bonding网卡绑定工具
  • 网站开发 文学网站建设讲解材料
  • 网站常见的域名网站备案企业用个人来备案可以用吗
  • 重组蛋白表达技术|HEK293细胞蛋白表达|高效重组蛋白生产服务
  • 曹县网站建设公司做一个线上app多少钱
  • 官方网站建设的意义芜湖有哪些招聘网站
  • 网站建设 考试题目wordpress怎么上手
  • 网站后缀名厦门做企业网站
  • 做网站月薪网站开发开票内容
  • 南通做百度网站的公司网站电子商务网站建设技术
  • 种子网站开发简单网站建设方案策划
  • asp做网站安全性写一个简单的网页