<学习计划> 一、重点学习新算法 1.平衡树splay,动态树LCT 2.(任意模数)NTT 3.莫队算法 4.带修主席树(树状数组套主席树),线段树/树状数组套平衡树 5.后缀数组/后缀自动机 二、刷题,复习、巩固在OJ上打星号的题目 <注意事项> 1.考试时无论题目有多难,都要努力想正解,不要理 ...
分类:
其他好文 时间:
2020-01-21 00:32:52
阅读次数:
92
int lca(int x,int y) { if(de[x]<de[y]) swap(x,y); int d=de[x]-de[y]; for(int i=log2(d);i>=0;i--) { if(d&(l<<i)) { x=fa[x][i]; } } for(int i=log2(n);i> ...
分类:
其他好文 时间:
2020-01-20 20:36:20
阅读次数:
65
dfs序上的带修主席树;求链上的信息仍然是四个点差分,只不过求前缀和变成了 $\log$ 的树状数组; 2020.01.20 ...
分类:
其他好文 时间:
2020-01-20 09:44:54
阅读次数:
59
链接:https://codeforces.com/contest/1288/problem/E 题意:序列p的长度为n,初始序列为1 2 3 4 ...n,然后有m次操作,每次指定序列中一个数移动到第一位,然后剩下的所有序列往后移动一位,求每个数在出现过的所有历史序列中所在位置索引的最大值和最小值 ...
分类:
编程语言 时间:
2020-01-19 09:50:31
阅读次数:
101
一维树状数组维护的是区间和,最后统计的是1~x数的和,而二维树状数组维护的是一个面的和,最后统计的是 (1,1)~(x,y)区域内数的和 (x,y)所维护的面大小由x,y共同决定,x决定高度,y决定宽度 add和query操作的两层循环结合二分图理解比较直观 如何分呢?首先,我们按照X坐标,把整个表 ...
分类:
编程语言 时间:
2020-01-19 00:35:57
阅读次数:
119
1760:树上数颜色 时间限制: 3000 ms 内存限制: 524288 KB提交数: 35 通过数: 9 【题目描述】送你一棵n个点的树,树根为1。一开始每个点上有一个1~n 的颜色ci,不同点颜色可以相同。 现在有 q 次操作, 分为两种类型: 1 u l r:询问子树 u 中有多少种在 l ...
分类:
其他好文 时间:
2020-01-19 00:27:55
阅读次数:
104
代码中的下标从0开始,原理是一样的 int f[N]; void upd(int x, int val){ for (int i = x; i >= 0; i = (i & (i + 1)) - 1) f[i] += val; } int get(int x){ int res = 0; for ( ...
分类:
编程语言 时间:
2020-01-19 00:06:36
阅读次数:
87
题意:Polycarp是一个频繁交流的受欢迎的送信人,他与朋友们一直交流,他有n个朋友,从1到n编号。一开始,n个朋友的编号是从1、2、3、4....n编号的,如果交流了3,那么3的位置就会移动到最前面,变成3、1、2、4...n。 分析:这道题目让我们求每个朋友的编号所能达到的最大位置和最小位置, ...
分类:
其他好文 时间:
2020-01-16 22:20:28
阅读次数:
84
1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 int mn[600007],mx[600007],a[600007],pos[600007],sum[600007]; 5 int n ...
分类:
编程语言 时间:
2020-01-16 22:12:58
阅读次数:
73