2026/10/16衡中集训

模拟赛

已完成今日八个人330大学习

T1 还原零一串

很简单的一个题,读题能知道每次放要么左边0右边1,要么左边1右边0
所以还原到原来的字符串就是现在字符串删去1与0交替的前后缀的字符串
可以定义两个指针l为第一位和r为最后一位,如果这两个对应的字符是一个1一个0,就l++,r--,最后输出r-l+1即可

T2 cyw 的学习计划

简单的dp题,可以定义dp[i][1],dp[i][2],dp[i][3]为当前天数选a,b,c科的最小花钱数
因为两天不能选一样的,所以dp[i][x]就需要从dp[i][y],dp[i][z]中的最小值转移过来
易得以下转移方程:

dp[i][1]=min(dp[i-1][2], dp[i-1][3])+a[i];
dp[i][2]=min(dp[i-1][1], dp[i-1][3])+b[i];
dp[i][3]=min(dp[i-1][1], dp[i-1][2])+c[i];

最后输出min({dp[n][1], dp[n][2], dp[n][3]})即可

T3 迷宫

本来还以为是什么高深的dp,结果一看\(n\leq1000\)就踏实了,可以直接BFS
不难发现0在奇数时间为空地,偶数时间为障碍,1则相反,那我们可以定义u在BFS中为空地的数字
即在奇数时间为0,偶数时间为1,最后判断能不能走就是mp[nxtx][nxty]==u(nxtx,nxty为下一步走的坐标),最后BFS到了取最小值即可

T4 异或平方和

666吓哭了,比昨天的K题难多了,你看这个\(\LaTeX\)就知道了
给n个整数,让你求
\(\Large \sum\limits_{i=1}^{n}\sum\limits_{j=i}^{n}\left(⨁\limits^j_{k=i}a_k\right)^2 \mod 998244353\)
很明显,这个式子可以简化成这种形式:
\(\large \sum\limits_{i\leq j}(a_i\oplus a_{i+1}\cdots\oplus a_j)^2\)
这里我们可以定义pre[i]表示1~i的前缀异或,因为异或有自反性,所以pre[i~j]=pre[j]^pre[i-1]所以我们的题目就简化成了求
\(\large \sum\limits_{x<y}(pre_x\oplus pre_y)^2\)
暴力枚举每个x, y可以拿到30分(这也是很多人的做法),考虑正解吧
令\(K=(pre_x\oplus pre_y)^2\),把\(K\)按位拆分就是\(K=\sum\limits_{b}K_b2^b\)
把\(K\)带入平方,就能得到\(K^2=\sum\limits_{p}\sum\limits_{q}K_pK_q2^{p+q}\)
只有当\(k_p\)和\(k_q\)都为1时才会做出贡献\(2^{p+q}\),另外如果p=q就只会数1次,如果p<q就意味着会被数两次,贡献也就是\(2\times 2^{p+q}\),我们可以设为w
因为\(N=2\times 10^5\),二进制最多有18位,所以可以直接枚举p=0~18,q=0~18
接下来就是O(n)的循环枚举每个前缀和pre,统计所有的贡献了,但是我们如何能一次循环就做到这一点捏
我们知道异或有个特性,如果a^1=n那么就有a^n=1,所以对于pre[i]的二进制第p位和第q位,我们也要去找这样与他异或后=1的数,其实就是第p位与q位^1
可以定义一个cnt[2][2],第一位表示对于每个pre的p位,在pre[i]之前出现过几次0/1,第二位同理就是q的情况
令pre[i]第p位为x,q位为y,所以这样对于每个pre[i]的贡献就是cnt[x^1][y^1],再乘以原先每一位的贡献w,令答案ans累加即可
注意计算pre, w, ans以及记录\(2^i\)的数组pw都要mod 998244353

后语

额啊这个题思维含量实在是太高辣 可能有绿吧 ,看题解理解也需要很长的时间,不过最后这个题也是听懂了,也感谢田有策和许喆迦给我讲解这个题,让我对这个题有更深的理解和收获,太强啦%%%

关于$\LaTeX$ 另外有些同学希望要我的$\LaTeX$,这里也给出来吧:

题面:$\Large \sum\limits_{i=1}^{n}\sum\limits_{j=i}^{n}\left(⨁\limits^j_{k=i}a_k\right)^2 \mod 998244353$
化简1:$\large \sum\limits_{i\leq j}(a_i\oplus a_{i+1}\cdots\oplus a_j)^2$
化简2:$\large \sum\limits_{x<y}(pre_x\oplus pre_y)^2$
K与K拆分:$K=(pre_x\oplus pre_y)^2$ $K=\sum\limits_{b}K_b2^b$
K带入平方:$K^2=\sum\limits_{p}\sum\limits_{q}K_pK_q2^{p+q}$

关于cnt数组,老师给的解释 (另一种组合数的解释,来源自老师给的T4代码的解释)、

image

posted @ 2026-10-16 14:54  lzacode  阅读(4)  评论(1)    收藏  举报