上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 21 下一页
摘要: 题意:给出一个序列,删除一个连续的子串后使得剩下的平均值最小。 典型的01分数规划,令f(x)=(sum1[i]+sum2[j])/(i+j).sum1表示前缀和,sum2表示后缀和,那么我们就相当于求出f(x)的最小值。 令f(x)=y,化简则有(sum1[i]-i*y)+(sum2[j]-j*y 阅读全文
posted @ 2017-05-10 15:31 free-loop 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 要求一段最大的区间里每个能力的增长值是一样的。 我们首先求一遍前缀和,发现,如果区间内[l,r]每个能力的增长值是一样的话,那么前缀和[r]和[l-1]的差分也应该是一样的。 那么我们把前缀和的差分hash一下,排个序,求出hash值相同的且跨越最远的两个端点,就是答案了。 # include <c 阅读全文
posted @ 2017-05-09 16:08 free-loop 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一颗n个点的图,q个询问,每次询问u到v的路径中最小的边最大是多少。 图的最大生成树有一个性质,对于该图的任意两个点,在树中他们之间路径的最小边最大。 由于这个图不一定联通,于是我们对它的联通块都求一次最大生成树。 每次询问就变成了在最大生成树上找出u到v路径的最小边。 这个显然可以用LC 阅读全文
posted @ 2017-05-07 14:46 free-loop 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 第一问求最小割。 第二问求割边最小的最小割。 我们直接求出第二问就可以求出第一问了。 对于求割边最小,如果我们可以把每条边都附加一个1的权值,那么求最小割是不是会优先选择1最少的边呢。 但是如果直接把边的权值+1,这样求得的最小割就不是原来的最小割了,那是因为1会对原来的容量产生影响。 如果把每条边 阅读全文
posted @ 2017-05-07 13:40 free-loop 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 首先注意到,把一个点的海拔定为>1的数是毫无意义的。实际上,可以转化为把这些点的海拔要么定为0,要么定为1. 其次,如果一个点周围的点的海拔没有和它相同的,那么这个点的海拔也是可以优化的,即把这个点变为周围海拔一样的显然能使结果变优。 于是问题就变成了,这个图的海拔为0的联通块和起点连在一起,海拔为 阅读全文
posted @ 2017-05-05 15:45 free-loop 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 首先注意到这样一个事实。 树上两个点(u,v)的LCA的深度,可以转化为先将u到根路径点权都加1,然后求v到根路径上的总点权值。 并且该题支持离线。那么我们可以把一个区间询问拆成两个前缀和形式的询问。 现在问题就变成了求[1,r]和x的LCA深度之和。实际上就是把[1,r]到根路径点权点1,然后求x 阅读全文
posted @ 2017-05-04 17:26 free-loop 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 1.一些贪心问题并没有很强的直观性,但是如果把题目的限制巧妙转化一下达到去除限制依然不影响最优解的情况下,或许此时的贪心策略会更好发现。 2.Dilworth定理:对于一个有限偏序集,链的最少划分数=最长反链长度。反链的最少划分数=最长链长度。 luogu 1007 独木桥 此题的限制在于蚂蚁相遇后 阅读全文
posted @ 2017-05-04 11:59 free-loop 阅读(193) 评论(0) 推荐(0) 编辑
摘要: # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # include <queue> # include <stack> # include <map> 阅读全文
posted @ 2017-05-02 21:34 free-loop 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 把人分成两个集合,一个赞成睡觉,一个反对睡觉。好朋友连一条容量为1的双向边,s向赞成睡觉的连边,反对睡觉的向t连边。 那么这个图的一个割就对应着一个方案。如果割掉s和v的边,就代表v投意见与它自己相反的票,t和v的边同理。割掉u和v的边,就代表了这对好朋友之间意见不同。 这样求出一个割之后,好朋友之 阅读全文
posted @ 2017-05-02 17:29 free-loop 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 题意:求闭区间内能被6和8组成的数字整除的数目。n<=1e11. 我们可以预处理出这些6和8组成的数字,大概2500个,然后排除一些如88,66的情况。这样大概还剩下1000个。 转化为[0,r]和[0,l-1]的问题,显然需要运用容斥原理。ans=n/6+n/8+n/68+...+...-n/lc 阅读全文
posted @ 2017-05-02 14:50 free-loop 阅读(222) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 21 下一页