摘要:
二分 一道藏的很深的二分题。。。 题目保证只有一个点有奇数个防具,这个是突破口。 因为 奇数+偶数=偶数,我们假设某个点x,如果有奇数点的防具在x的左边,那么x的左边的防具总数一定是奇数,右边就是偶数 所以我们可以用这个来二分。 至于统计防具的公式,那就是小学学过的等差数列项数=(末项 首项)/公差 阅读全文
摘要:
环形均分纸牌 普通的均分纸牌前缀和的总和就是答案。 但是这里是环形的,要断开的位置需要最佳,我们把每个数减去sum/n,这样总的前缀和就为0了,若在第k个数之后把环断开,环形前缀和可以统一写成s\[i] s\[k] 运用环形前缀和的技巧,排序后找中位数可得到最优的断开环的位置。 include de 阅读全文
摘要:
树上差分 这应该是一道很简单的树上差分了。。就是问每个点被覆盖了多少次。 要注意我们最后dfs后,要把除第一个节点以外的所有点的 1,因为有些点作为起点和终点覆盖了两次,按照题目意思是不用覆盖两次的。 include define INF 0x3f3f3f3f define full(a, b) m 阅读全文
摘要:
树上倍增+kruskal 要找严格次小生成树,肯定先要找到最小生成树。 我们先把最小生成树的边找出来建树,然后依次枚举非树边,容易想到一种方式: 对于每条非树边(u,v),他会与树上的两个点构成环,我们在树上的两个点路径上找到最大值a和次大值b,如果非树边(u,v)的权值大于a,那么用mst a+w 阅读全文