[2024.11.11]NOIP模拟赛T2
赛时
T1 提议看懂以后立马意识到就是让求最长Border。
对于
容易发现如果
否则加上最长循环元长度即可。
循环元还是用 KMP 求。
T2 让我想起了之前一道硬控我 3h 的题目。
先把
于是我开始在纸上画,发现需要根据
结合前天 ABC-E 的贡献求法,累加答案,然后根据
其实一开始认为奇数的答案是一样的,但是样例过不去,然后发现此时贡献的分段界点会有变化,所以差别会很大。
然后我引入一个变量
这个思路特别有前途,因为
先想
有了这个,我再引入一个变量
本来想继续推奇数的,但是看着已经 11:00 了,就打算先把这些写了。
然后写着写着发现特别难调,然后我就调到了 11:50。
嗯,这下这个蛇型矩阵就一共硬控我 3+3=6h 了。
此时我 T2 的期望是 40pts。
赛后
发现 T2 我每次都输出了
看见有人前三题都过了,瞬间意识到自己是个废物。
没办法,继续推 T2。
又推了 10min 得出
调了 20min 后成功获得 70pts。
开始讲题了,大概懂了 T3T4 的思路。
继续写 T2。
现在剩下
因为彼此之间是旋转 180° 的关系,我觉得两种情况是类似的。
然后推着推着我发现差别大的远超出预期。
但好在基本思路不变,然后我发现
最后一种情况了,冲!
好在不难,又推了一会发现答案是
虽然但是,用心的你能发现当这种东西出现
然后我又被硬控了 1h。
终于过掉了。
发现自己用时最短。
我尝试删掉暴力那一档分段,然后发现自己用时是标程的
嗯……虽然但是 T3T4 连暴力都没写,大考中这样的话就真的废了。
但是好在我认为 NOIP 不会出这种题目。
T3 听懂以后发现并不难,关键是发现新图重构树的性质和转化题意。
T4 也是有分可拿。
这场 T2 和之前那场一样都是规律题,一旦开始写就感觉写不出来很亏,以至于浪费了全部时间。
但是同时我意识到自己赛时还是思维能力不足的表现。
彩蛋:我的 T2 代码:
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read()
{
int w=1,s=0;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
while(isdigit(ch)){s=s*10+(ch-'0');ch=getchar();}
return w*s;
}
const int maxn=2e6+10;
const int mod=998244353;
const int inf=1e9+7;
int n,op,k;
int ans=0;
int x,y;
int a[5010][5010];
int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
void Sub(int X,int Y)
{
int nd=0,nt=1;
int x=1,y=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=0;
while(nt<=n*n)
{
a[x][y]=nt;
int xx=x+dx[nd],yy=y+dy[nd];
if(xx<1||xx>n||yy<1||yy>n||a[xx][yy])
{
nd=(nd+1)%4;
xx=x+dx[nd],yy=y+dy[nd];
}
x=xx,y=yy;nt++;
}
x=X,y=Y;
int res=0;
while(x<=n&&y<=n)
{
(res+=a[x][y])%=mod;
x++;y++;
}
ans^=res;
return ;
}
int qw(int x,int y)
{
int res=1;
while(y)
{
if(y&1)res=res*x%mod;
x=x*x%mod;
y>>=1;
}
return res;
}
int inv3,inv2;
void Main()
{
n=read(),op=read(),k=read();
if(op==1)x=k,y=1;
else x=1,y=k;
int res=0;
if(k==1)
{
if(n%2==0)
{
res = res + n * n % mod * n % mod * 2 % mod * inv3 % mod;
res%=mod;
res=res + n * inv3 % mod;
res%=mod;
res=res - n * n % mod * inv2 % mod;
res=(res%mod+mod)%mod;
ans^=res;
return ;
}
int x=n/2;
res=res + 4 * n % mod * x % mod * (x-1) % mod;
res%=mod;
res=res + n * 2 % mod * x % mod;
res%=mod;
res=res - 4 * x % mod * (x-1) % mod * (2*x-1) % mod * inv3 % mod;
res=(res%mod+mod)%mod;
res=res - 2 * x % mod * (x-1) % mod;
res=(res%mod+mod)%mod;
res=res + 1 + 4 * x % mod * (n - x) % mod;
res%=mod;
ans^=res;
return ;
}
if(op==1)
{
if((n-k)&1)
{
int x=(n-k+1)/2;
res = res + 4 * x % mod * (x-1) % mod * n % mod;
res%=mod;
res = res - 4 * x % mod * (x-1) % mod * (2*x-1) % mod * inv3 % mod;
res=(res+mod)%mod;
res = res - 2 * x * (x-1) % mod;
res=(res+mod)%mod;
res = res + 2 * n % mod * x % mod;
res%=mod;
ans^=res;
return ;
}
int x=(n-k+1)/2;
res = res + 4 * x % mod * (x-1) % mod * n % mod;
res%=mod;
res = res - 4 * x % mod * (x-1) % mod * (2*x-1) % mod * inv3 % mod;
res=(res%mod+mod)%mod;
res = res - 2 * x % mod * (x-1) % mod % mod;
res=(res%mod+mod)%mod;
res = res + 2 * n % mod * x % mod;
res%=mod;
res = res + k + 4 * x % mod * (n-x) % mod;
res%=mod;
ans^=res;
return ;
}
if((n-k)&1)
{
int x=(n-k+1)/2;
res = res + 2 * (n-2) * x % mod * (x-1) % mod;
res%=mod;
res = res - 4 * x * (x-1) % mod * (2*x-1) % mod * inv3 % mod;
res=(res%mod+mod)%mod;
res = res + 2 * (n-1) % mod * x % mod * (x-1) % mod;
res%=mod;
res = res + 6 * n % mod * x % mod;
res%=mod;
res = res - 4 * x % mod;
res=(res%mod+mod)%mod;
ans^=res;
return ;
}
int x=(n-k+1)/2;
res = res + 2 * (n-2) * x % mod * (x-1) % mod;
res%=mod;
res = res - 4 * x * (x-1) % mod * (2*x-1) % mod * inv3 % mod;
res=(res%mod+mod)%mod;
res = res + 2 * (n-1) % mod * x % mod * (x-1) % mod;
res%=mod;
res = res + 6 * n % mod * x % mod;
res%=mod;
res = res - 4 * x % mod - k - 2;
res=(res%mod+mod)%mod;
res = res + 4 * n % mod * (x+1) % mod;
res%=mod;
res = res - 4 * x % mod * (x+2) % mod;
res=(res%mod+mod)%mod;
ans^=res;
return ;
}
signed main()
{
#ifdef Lydic
freopen(".in","r",stdin);
freopen(".out","w",stdout);
#else
freopen("maze.in","r",stdin);
freopen("maze.out","w",stdout);
#endif
inv3=qw(3,mod-2);
inv2=qw(2,mod-2);
int T=read();
while(T--)Main();
cout<<ans<<endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】