上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 27 下一页
摘要: 发现对于某一个点它向上发的一条边,它被经过的次数就是这个点子树数量*不是它子树的数量 那就维护一个前缀和,然后每次拿两个端点和它们的lca的值加一加减一减,再乘上加上的值,就是这次修改后答案的增量 (最后答案还要除以(N*N)) 倍增会被卡空间,难受 阅读全文
posted @ 2018-09-13 23:16 Ressed 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 由于是一个二次函数的关系,所以易证应该尽量让两组的顺序相同 然后就离散化乱搞几发,最后就变成了求逆序对的数量了 阅读全文
posted @ 2018-09-13 23:09 Ressed 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 用一个差分树状数组维护一下每个深度的和,然后每次拿着路径端点和lca加一加减一减就行了 阅读全文
posted @ 2018-09-13 23:06 Ressed 阅读(189) 评论(0) 推荐(0) 编辑
摘要: https://www.vijos.org/d/SUOI/p/59dc5af7d3d8a1361ae62b97 二分一个答案,然后做一做前缀和,用满足区间大小的最小值减一减,判断答案合不合法 然而还要输出一个最小的区间 太毒瘤了 但其实最后答案中最小区间的端点就只能是刚才做的那个最小值,因为如果不是 阅读全文
posted @ 2018-09-13 23:02 Ressed 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 设f1[i]表示以1..i中某个合法序列的长度,而且最后一位是较大的 f2[i]表示以1..i中某个合法序列的长度,而且最后一位是较小的 那么就有$f1[i]=max\{f2[j]+1\},(j<i,h[j]<h[i])$,f2同理 本来想直接建线段树来维护这个最大值的,但是似乎不需要: 对于f1, 阅读全文
posted @ 2018-09-13 22:55 Ressed 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 把一个点拆成三个,分别对应它的同类、它的猎物和它的天敌,这样的话(以下的相等都是并查集意义上的): 如果令a,b同类,那么a的猎物不能是b的同类,a的天敌不能是b的同类 如果令a吃b,那么a的同类不能是b的同类、a的天敌不能是b的同类。 要令a,b同类,就使(a和b)的同类、猎物、天敌分别相等 要令 阅读全文
posted @ 2018-09-13 22:47 Ressed 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 我们一位一位地来做,每次判断这一位能否放0,而且要在满足前几位的情况下。用dp来判断 具体来说,设f[i][j]表示前i个划分成j个区间能否满足,那么我们会有转移trans[i][k+1],当区间[i,k]的和在某些位上不是1时trans[i][k+1]=1 这些位,就是正在做的这位和它之前确定下来 阅读全文
posted @ 2018-09-13 22:41 Ressed 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 我想动某个点的话,一定要先把空白点移动到这个点旁边,然后调换这个点和空白点,一直重复 那么,我们就可以记一些状态(x,y,s) (s={0,1},{0,-1},{1,0},{-1,0}),表示我要动的点在(x,y),然后空白点在(x+s.x,y+s.y) 这样的话我们就可以建图:$(x,y,s)-1 阅读全文
posted @ 2018-09-12 20:22 Ressed 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 给周围的点编号1到n 我们设f[i]为(1到i和中间点)连成一个联通块的情况数,那么有$f[i]=\sum{f[i-j]*j}$,就是从i-j+1到i里选一个连到中心,然后再把i-j+1到i连成链 但这样的话,1和n不能连,那就再考虑,如果我们通过1-n这条边链起了i个点,那就再从这i个里连1个到中 阅读全文
posted @ 2018-09-12 13:42 Ressed 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 先求出某一段时间[i,j]一直用同一个路径的最短路,乘上天数,记作cost[i,j] 那就可以设f[i]是前i天的最小代价,f[i]=f[j]+cost[j+1,i]+K 阅读全文
posted @ 2018-09-12 12:53 Ressed 阅读(129) 评论(0) 推荐(0) 编辑
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 27 下一页