[关闭]
@LittleRewriter 2018-09-24T10:35:21.000000Z 字数 1498 阅读 724

qwq

luogu 3958

  1. int a[4] = {1, 2, 3, 4};
  2. do{
  3. for(int i = 0; i < 4; ++i) cout<<a[i]<<" ";
  4. cout<<endl;
  5. } while(next_permutation(a, a + 4));

最小的N 使得

  1. #define LL long long
  2. LL ksm(LL a, LL n, LL m) { //a^n % m
  3. LL ans = 1;
  4. while(n) {
  5. if(n % 2 == 1) ans = ans * a % m;
  6. a = a * a % m;
  7. n /= 2;
  8. }
  9. return ans;
  10. }

fake T3

1111100011 % K = x

n 1 m 0

前缀和

1 2 3 4 5
[2, 4] + 2 -> 1 4 5 6 5
[1, 3] + 1 -> 2 5 6 6 5

cf[i] 0 0 0 0 0
0 2 0 0 -2 -> 0 2 2 2 0
1 2 0 -1 -1 -> 1 3 3 2 0

0 2 2 2 0 cf[i] = a[i] - a[i-1]
0 2 0 0 -2

3 4 5 6 7 -> 12
5 6 7 7 -> 30
7 7 11 -> 49
11 14 -> 154
25


T1

map + 暴力模拟


T2

龟速乘法

取模 模2p ->超时

前缀和


T3

对于,裸的并查集

观察到,对于中的子图数量=点的数量- 端点在区间中的边的数量

对另外,这个时候可以直接拖动右端点来加边。问题转化为了求解端点在内的边的数量。

以此为启发,我们可以考虑莫队来实现add和del操作,寻找每一个加入或删除的点的连边在区间内的数量,复杂度期望,但是会被没有随机生成的数据点卡掉,可以得到80分。

对于,首先将操作离线,离线之后同样每次拖动右端点,更新右端点连向的编号小于本身的点,然后如果询问的右端点为该点本身,则输出,可以使用树状数组维护。这样可以消除后效性,复杂度

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注