http://www.lydsy.com/JudgeOnline/problem.php?id=3779 有一棵树,初始每个节点有不同的颜色 操作1:根节点到x的路径上的点 染上一种没有出现过的颜色 操作2:操作1后把x换成根 操作3:定义点x的点权为x到根节点路径上不同颜色的数量,查询x的子树点权和 LCT+线段树+dfs序 dfs一遍得到每个点的dfs序, 以及每个点子树的dfs序范围,记点x的子树dfs序范围为 [Lx,Rx] 线段树以dfs序为顺序维护 操作1就是access, 一条Pr…
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色之后,任意满足要求的四联通块一定可以是 黑色-->紫左-->紫右-->白色 只要破坏三个箭头中的一个即可 所以可以构建最小割模型 1.源点向黑色格连流量为格子代价的边 2.黑色格向相邻的紫色格连inf边 3.与黑色格相邻的紫色格向与白色格相邻的紫色格连 流量 为 两个紫色格较小代价 的边 4…
http://www.lydsy.com/JudgeOnline/problem.php?id=1966 f[i][j] 表示s的前i个和t的前j个是否匹配 转移看代码 注意初始化: f[0][0]=true f[i][0]=true  s[1,i]='*' 如果没有第二个,反例: ***A A f[4][1]=f[3][0] #include<cstdio> #include<cstring> using namespace std; #define N 1001 #define…
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j 位置的数是区间[i,j]的最大值和次大值 提供p2的攻击力:i,j位置的数有一个是区间[i,j]的最大值,另一个不是次大值 记录L[i].R[i] 分别表示i左右第一个大于k[i]的位置 p1的贡献: 1.点对(L[i],R[i])    2.点对(i,i+1) p2的贡献: 1.点对(L[i],…
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #include<cstdio> #include<iostream> #define N 200001 using namespace std; #define max(x,y) ((x)>(y) ? (x) : (y)) #define min(x,y) ((x)<(y)…
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; #define N 100001 struct node { int siz; ],R[],con[]; ]; bool rev; int cover; }tr[…
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式为AA的子串个数 ans= ∑ suf[i]*pre[i+1] 这两个数组的求法,类似bzoj 2119.3238 枚举|A|的长度len,将序列每len个分一块,取每块内第一个元素作为关键点 每个合法的AA恰好占据两个关键点 枚举每一个关键点i,取j=i+len 计算[i,n]和[j,n]的lcp…
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define N 300001 char ss[N]; int s[N]; ,last; int fail[N],len[N],cnt[N…
http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len [i] 表示以i结尾的最长不下降子序列的长度 pre_sum[i] 表示对应长度下的方案数 suf_len[i] 表示以i开头的最长不下降子序列长度 suf_sum[i] 表示对应长度下的方案数 若已有了这4个数组 设最长上升子序列长度=mx 那么 如果pre_len[i]+suf_len[i] -…
http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最近是怎么了啊啊啊O(≧口≦)O #include<cstdio> #include<iostream> using namespace std; int n,m; ]; void read(int &x) { x=; ; char c=getchar(); ; c=getcha…