摘要:
splay+二分+哈希 splay维护区间哈希值,每次二分长度 调了很长时间,主要是两个错误:1.提取区间应该是pos+1,pos+2,因为现在在开头放了一个?,所以现在应该是位置比pos+1大,比pos+2小 2.二分边界,因为多加了两个字符,所以原串长度应该是cnt-2,那么二分边界应该是-1- 阅读全文
摘要:
A:暴力模拟,能加就加,如果累计到了8就加上,每次累积 #include<bits/stdc++.h> using namespace std; int main() { int n,k ,cnt = 0; scanf("%d%d", &n, &k); for(int i = 1; i <= n; 阅读全文
摘要:
最小生成树+最小割 。。。我太zz了,没看出来全体减1是一个加1,看见后就是sb题了。。。 我们发现根据克鲁斯卡尔的过程,我们把边从小到大加入,如果两点已经相连就跳过,那么我们把所有小于等于这条边的边加入,如果能够联通这两点,那么说明得增加一些边的权值,所以我们求出和这条边的差+1,连边,使得没有一 阅读全文
摘要:
最小生成树 其实这道题是最小生成树的变种,我们发现答案不一定在最小/最大生成树上,最短路算法也不可行,因为我们我们并不是希望最小值尽量的大,最大值尽量的小,这样不一定是最优的,那么我们枚举最小的边,然后将大于他的边依次加入,直到联通,每次求出最大的边和枚举的最小边就是当前答案,更新即可。最大/最小生 阅读全文
摘要:
可并堆 复习一下可并堆 维护一个大跟堆,每次把节点儿子打上边权标记,然后合并,可并堆上维护一个size,每次把大于l的弹出,size就是答案 程序中那个d写l和r速度差不多,我写l是表示右儿子到u的最长距离 #include<bits/stdc++.h> using namespace std; c 阅读全文
摘要:
AC自动机+树链剖分+线段树/树状数组+dfs序+树链的并 题意:给出n个母串和q个询问串,对于每个询问串输出有多少个母串包含这个询问串 N=∑|母串|<=10^5 Q=∑|询问串|<=3.6*10^5 由于是母串包含询问串,那么我们就对询问串建自动机,然后用母串在上面跑,跑一次的复杂度是母串的长度 阅读全文
摘要:
后缀数组+st表+分块+离散化 警告!!!博主内心已经崩溃啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 阅读全文
摘要:
费用流+线性规划 搞了很长时间。。。 我们可以设立式子,a[1]+a[2]+a[3]+...+a[n]<=k , ... , a[2 * n + 1]+ ... +a[3*n]<=k a是指该位有没有选 那么我们添加一个辅助变量f a[1]+a[2]+a[3]+...+a[n]+f[1]=k, .. 阅读全文
摘要:
费用流 和3280很像,先建出上下界模型,然后转为普通费用流模型 s->1 flow=inf, c = f s->i+n flow=x,c=0; i->t,flow=x,c=0 i->i+1 flow=inf, c=0; i+n->i+n+1,flow=inf,c=0 i->i+a+1,i->i+b 阅读全文
摘要:
费用流 建图:建立源汇s,t,对于每天建立两个点,live和dead,live向dead连接下界为a[i],上界为a[i],费用为0的边,表示一天需要只a[i]个人,也就是一天必须死a[i]个人,然后源点向第一天连上所有l[i],b[i],每天live连向下一天,容量为inf,费用为0,表示一天没有 阅读全文