char s[maxn];
int sa[maxn];
int t[maxn], t2[maxn], c[maxn];
int rank[maxn], height[maxn];
int n;
void build_sa(int m)
{
int i, *x = t, *y = t2;
for(i = 0; i < m; i++)
c[i] = 0;
for(i = 0; i < n; ...
分类:
其他好文 时间:
2014-07-22 23:04:34
阅读次数:
293
题目链接食物链类似的题,主要是在于转化,a-b的和为s,转换为b比a-1大s。然后并查集存
此节点到根的差。假如x的根为a,y的根为b:b - y = rank[y]a - x = rank[x]y - x = s可以推出b - a = rank[y]
- rank[x] + s;并查集 延迟更新什...
分类:
其他好文 时间:
2014-05-09 18:38:05
阅读次数:
213
这个题目我最开始看题目看了半天,看不懂。。但是通过看样例及答案终于看懂了。。。
首先先解决等级的关系。。如果等级越界,则不能交换。。所以原本等级的界限是
[rank[1]-m,rank[1]+m],但是这个边界里面会出现等级只差大于m,所以等级的区间应该是
[rank[1]-m,rank[1]],[rank[1]-m+1,rank[1]+1]............等等,所以一直枚举到 [r...
分类:
其他好文 时间:
2014-05-09 06:05:39
阅读次数:
270
题目大意:给出一个范围M,然后给出若干的区间,以0 0 终止, 要求用最少的区间将0 ~M 覆盖,输出最少个数以及方案。
解题思路:典型的区间覆盖问题,算法竞赛入门经典P154上有讲。
/*author: charkj_z */
/*time: 0.108s */
/*rank: 674 */
/*为什么不把没用的地方去掉? 因为去掉了我觉得不像我能写出来的*/
/*Ac code :...
分类:
其他好文 时间:
2014-05-09 02:26:29
阅读次数:
275
N的范围很大,但Q的范围比较小.可以把TOP,QUERY操作用到的点分离出来,没用到的段缩成点
对于TOP 把x转到根,删除后加到开头位置
对于QUERY 旋转到根直接输出
对于RANK,递归
Queue-jumpers
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe...
分类:
其他好文 时间:
2014-05-07 22:36:28
阅读次数:
559
设 $A,B$ 都是 $n$ 阶复方阵, 且 $A^2+B^2=2AB$. 证明: (1)
$AB-BA$ 不可逆; (2) 如果 $\rank(A-B)=1$, 那么 $AB=BA$.
分类:
其他好文 时间:
2014-05-07 10:49:36
阅读次数:
209
5KB的代码。。。250+行。。。就错在一个离散化上,郁闷了好久。。。
RANK就是找出第K位是多少
TOP是将某个人移至队首,对中间区间没有影响
QUERY是某个人的位置
则:
TOP:将目标点旋转至根部,然后删除,最后插入到队首
RANK:通过size查找即可,注意每个点的size是区间长度
QUERY:把该点旋转至根部,左子树的大小+1便是结果
...
分类:
其他好文 时间:
2014-04-27 21:23:00
阅读次数:
330