AC代码

最主要的思想就是对前缀和进行一个预处理(即mod M)
再说的透一点,就是想怎么把这个对拍程序时间复杂度最高的这部分给化简
1 | for(int i=1;i<=n;i++) { |
这题如果你比较老实,你可能需要使用平衡树,但是你永远可以相信vector大法(虽然好像有点极限)
1 |
|
心路历程(WA,TLE,MLE……)
对拍程序
1 |
|
distance 常数太大了
1 |
|

最主要的思想就是对前缀和进行一个预处理(即mod M)
1≤l≤r≤N∑((l≤i≤r∑Ai)modM)=1≤l≤r≤N∑(Sr−Sl−1)modM,
再说的透一点,就是想怎么把这个对拍程序时间复杂度最高的这部分给化简
1 | for(int i=1;i<=n;i++) { |
这题如果你比较老实,你可能需要使用平衡树,但是你永远可以相信vector大法(虽然好像有点极限)
1 | #include <iostream> |
对拍程序
1 | #include <iostream> |
distance 常数太大了
1 | #include <iostream> |
中心思想就是
// 以i点为中间点,对全部路径进行更新
只是求个最短路径的话连Path数组都不需要
AC记录
https://www.luogu.com.cn/record/186274091
1 | #include <iostream> |
时光倒流trick+floyd
注意重边处理
1 | #include <iostream> |
能跑,但是TLE,我发现这题竟然是floyd算法
需要时光倒流trick+floyd
1 | #include <iostream> |
WA了,可能是没有判别重边
1 | #include <iostream> |
这题题意很简单,把一段序列分为若干个子序列,要求这些子序列的和≠k,统计这种子序列的分法,mod 998244353
样例的计算过程如下
3 3
1 2 3

推出思路是这样的,不断枚举末尾

O(n^2)优化嘛就是用map维护之前的j
// 我们需要sumA[j]!=sumA[i]-k; 那为何不反过来想,把==的排除掉不就好了吗?
主要思路如上
AC
1 | #include <iostream> |
如果发现WA的比较多,但是又觉得没啥问题,可能是没mod的问题
WA,原因就是C++的%是取余,而题目要求取模,故要在%的时候加一个mod。
1 | #include <iostream> |