摘要:
模拟 没怎么看题。。直接deque模拟水过了。。 但是后来回过头看了下题意。。如果再次拿到正面朝上的牌,应该是废操作。。可能是数据太水了。。。 include define INF 0x3f3f3f3f define full(a, b) memset(a, b, sizeof a) using n 阅读全文
摘要:
平衡树。。 熟悉些fhq Treap,为啥我在poj读入优化不能用啊 阅读全文
摘要:
平衡树板子 因为之前写spaly删除出了大锅。。所以就去学了一手fhq treap。。。 下面是抄来的板子(真香 阅读全文
摘要:
平衡树 这题感觉用splay会更好写,我们用平衡树维护相对工资。 用一个变量记录工资增减的变化,也就是说存进树的值是x w,每次工资减少后,假设记录工资变化的变量为m,直接把m w的前驱splay到根,删除左子树即可 阅读全文
摘要:
二分 一道藏的很深的二分题。。。 题目保证只有一个点有奇数个防具,这个是突破口。 因为 奇数+偶数=偶数,我们假设某个点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 阅读全文
摘要:
LCA + 树上差分(边差分) 由题目意思知,所有主要边即为该无向图的一个生成树。 我们考虑点(u,v)若连上一条附加边,那么我们切断(u,v)之间的主要边之后,由于附加边的存在,(u,v)之间的路径形成了一个环, 所以我们还必须将这条附加边也切断。 因此我们可以看成(u,v)之间的路径上的所有边都 阅读全文
摘要:
树的直径 这题如果k=1很简单,就是在树的最长链上加个环,这样就最大化的减少重复的路程 但是k=2的时候需要考虑两个环的重叠部分,如果没有重叠部分,则和k=1的情况是一样的,但是假如有重叠部分,我们可以先把树直径找出来(最长链),然后把路径上的边权全部取反(1变 1),再找一次树的直径,如果第二次找 阅读全文