@LittleRewriter
2018-09-24T10:35:21.000000Z
字数 1498
阅读 724
luogu 3958
int a[4] = {1, 2, 3, 4};do{for(int i = 0; i < 4; ++i) cout<<a[i]<<" ";cout<<endl;} while(next_permutation(a, a + 4));
最小的N 使得
#define LL long longLL ksm(LL a, LL n, LL m) { //a^n % mLL ans = 1;while(n) {if(n % 2 == 1) ans = ans * a % m;a = a * a % m;n /= 2;}return ans;}
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
map + 暴力模拟
?
龟速乘法
取模 模2p ->超时
前缀和
对于,裸的并查集
观察到,对于中的子图数量=点的数量- 端点在区间中的边的数量
对另外,,这个时候可以直接拖动右端点来加边。问题转化为了求解端点在内的边的数量。
以此为启发,我们可以考虑莫队来实现add和del操作,寻找每一个加入或删除的点的连边在区间内的数量,复杂度期望,但是会被没有随机生成的数据点卡掉,可以得到80分。
对于,首先将操作离线,离线之后同样每次拖动右端点,更新右端点连向的编号小于本身的点,然后如果询问的右端点为该点本身,则输出,可以使用树状数组维护。这样可以消除后效性,复杂度