摘要: 树链剖分板子题,可以作为入门 操作1单点修改 操作2询问链上最大权值,线段树中加入max参数维护即可 操作3求权值和 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> # 阅读全文
posted @ 2021-09-17 16:30 lemonGJacky 阅读(45) 评论(0) 推荐(0)
摘要: 没什么特殊的一道树链剖分板子题,可以作为树剖入门题 操作1单点修改即可 操作2和操作3为树链剖分基础操作 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #includ 阅读全文
posted @ 2021-09-17 16:26 lemonGJacky 阅读(51) 评论(0) 推荐(0)
摘要: 此题用树链剖分处理 操作1:询问p点的工人是否能够到达q点 操作2:p点部落与q点开战 操作3:第x次战争结束 当p点与q点开战时工人无法通过两点间的路径,因此我们可以令开战时的路径权值为1,未开战时为0,则工人能到达q点的条件是:当且仅当p点到q点的路径权值和为0 需要注意的是,树链剖分是用来处理 阅读全文
posted @ 2021-09-17 16:15 lemonGJacky 阅读(52) 评论(0) 推荐(0)
摘要: 可以发现将整张图涂完需要n+m-1次,而每涂完一个点,这个点便可以影响到此点所在的一整列和一整行,我们考虑每填涂完一个点后将这些行和列放入一个连通块,则容易得出:当所有行和列连通时,填涂完毕。 行和列的总和一共有n+m,填涂需要n+m-1次,需要用到连通块,这三点结合起来容易让人想到Kruskal算 阅读全文
posted @ 2021-09-17 11:24 lemonGJacky 阅读(75) 评论(0) 推荐(0)
摘要: 构造字符串s1,s2,s3使得LCS(s1,s2)=a,LCS(s2,s3)=b,LCS(s3,s1)=c 我们先令minn为a,b,c三者中最小的,将s1,s2,s3用字符'a'填充至minn长度 然后再依次满足a,b,c三种条件,分别用字符'b''c''d'填充a-minn,b-minn,c-m 阅读全文
posted @ 2021-08-13 19:23 lemonGJacky 阅读(79) 评论(0) 推荐(0)
摘要: (赛场上想到了用单调栈,但是单调栈写错了没能过这题) 我们用sum[i][j]记录包含第i行第j列元素的当前最长不递减序列长度 如样例 1 2 4 2 3 3 用sum[i][j]记录 1 1 1 2 2 1 粗看这么记录好像没有什么作用 但单独抽出一行来看,把sum当作深度,我们发现这个问题转化为 阅读全文
posted @ 2021-08-11 14:44 lemonGJacky 阅读(46) 评论(0) 推荐(0)
摘要: 纯数学,求两个球的体积并,公式略(不懂怎么插入公式qwq) #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<queue> #include<algorithm> using namespac 阅读全文
posted @ 2021-07-23 18:31 lemonGJacky 阅读(70) 评论(0) 推荐(0)
摘要: 因为要求成功的游戏都放在后面,所以从后往前数1的个数,b[i]表示位置i前有几个1,从前往后数0的个数,c[i]表示位置i后有几个0 一旦选择了一个1,后面的所有游戏都只能选1,不能留一个0,基于这样的规定,前面只能留0,因此依次比较b[i]+c[i]的值,取最大值即可(特别地,c[n+1]为0的总 阅读全文
posted @ 2021-07-23 18:07 lemonGJacky 阅读(52) 评论(0) 推荐(0)
摘要: 直接模拟即可 需要注意的是,边界视为有墙,所以将所有边界值赋值为1 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<stack> #include<cstring> #include<q 阅读全文
posted @ 2021-07-23 17:11 lemonGJacky 阅读(52) 评论(0) 推荐(0)
摘要: 思路:如果一个数减去它的位数和小于等于x,那么所有小于这个数的数减去它本身的位数和都将小于等于x。可以证明当一个数满足了减去它的位数和小于等于x时,在个位数0~9的范围内,每减小1,位数和和它本身都减少1,所以0~9的范围内等价,当个位数从0减1变为9时,显然位数和增大了8,而此时数的本身仍然在减小 阅读全文
posted @ 2021-07-23 13:49 lemonGJacky 阅读(45) 评论(0) 推荐(0)