CSP-S 模拟赛 1

赛时和策略

6:20:发题以后看了一遍题,感觉 T2 和 T4 很可做,看了所有题目的数据范围大概就清楚了一些算法。

6:45:大致猜测 T1 是个矩阵快速幂,然后想到用 \(G^k_{i, j}\) 表示 \(i\)\(k\) 步走到 \(j\) 的方案数(一个比较经典的套路),但是 \(a\)\(b\) 不等,所以就没有写。
T2 我是用所有相等的哈希值减去相同的子串个数,就先写了。

7:10:发现没有按照题目中的方法进行哈希,很唐地去想用 \(\frac{H_r \mod m - H_{l - 1} \mod m}{P_l \mod m} \mod m\),然后发现不好做,仔细看了一下发现直接暴力扫一遍就行了。

7:30:大样例错了,跑得很慢,发现 pair 要比 array 快,又发现 map 的第一关键字个数和时间复杂度息息相关,于是用了 3 个不同的哈希就直接跳了。

8:00:这个时候感觉不是特别好,T4 里面的邻居以为是所有存在的 \(i\)\(i + 1\),语文水平堪忧。

8:20:打了 T3 的暴力,但是自己打暴力的水平也很堪忧。

后面就混过去了……

总结

感觉自己已经没有以前这么死磕题目了。
学了的知识点有时候不太变通。
计数题不太会。
题目风格变了也让我很卡。
平时还是要像 Acoipp 说的一样记录经典的 tricks。
T4 读懂了应该赛时可以写出来的。

题解:

T1

\(a \times b\) 的二维搞成一维就行了,写优雅一点,卡一下常就行了。

T2

每次出哈希,每次都被卡。

用 pair 来存题目和自己的哈希,然后 sort 一下在 first 相同的里面找答案。

至少这道题让我知道了 map 时间复杂度的变化,还是去学写一下模数和异或哈希吧。

T3

好像以前打表找规律的题目我是很擅长的,但是现在很少花时间在这个上面了。还是不能太懒了。

这个题就是打表以后发现在 1 ~ 1000000 以内所有数操作的次数最多为 4(证明的话就是二进制位的移动要求你最高位一定要是 1)。

通过这个性质去找每个数最多操作的次数 \(m_i\),然后计算 \(f_{a_i, k}\) 的合法性,即 \(a_i\) 操作 \(k\) 次是否可行。

最后用 dp 计算即可。

T4

想好再写吧。

对于所有的 \(s_i = s_j = 1\)\(i, j\) 有边的点对先连接起来。

每次只用对 \(i\) 进行判断是否要计算它的贡献。

posted @ 2025-09-02 00:02  Merge_all  阅读(15)  评论(0)    收藏  举报
//雪花飘落效果