摘要:
每次取两个点,把较劣的一方移动。 我的写法: 有个经典题是[SCOI2010]传送带 阅读全文
摘要:
强制在线。 在kruskal重构树上线段树合并即可。 题意有毒,ans = -1的时候下一次不异或。 1 /************************************************************** 2 Problem: 3551 3 Language: C++ 4 阅读全文
摘要:
题意:多次求从点x出发经过边权不超过k的边能走到的点中第k大的权值。 解:离线排序 + 并查集 + 线段树合并。 题面有锅...是第k大的权值不是第k大的山。 1 #include <cstdio> 2 #include <algorithm> 3 4 const int N = 100010, M 阅读全文
摘要:
题意:点分治每次随机选重心,求期望复杂度。 发现一次点分治的复杂度就是点分树上每个节点的子树大小之和。(并没有发现......) 看这个。 注意这个写法有问题,随便来个菊花图就是n2了。 每一层点分治的时候,时间复杂度决不能与上一层大小挂钩。 1 /************************* 阅读全文
摘要:
题意:给定树上k个关键点,每个点属于离他最近,然后编号最小的关键点。求每个关键点管辖多少点。 解:虚树 + DP。 虚树不解释。主要是DP。用二元组存虚树上每个点的归属和距离。这一部分是二次扫描与换根法。 然后把关键点改为虚树节点,统计每个虚树节点管辖多少个节点,用SIZ表示,初始时SIZ = si 阅读全文
摘要:
感觉上跟高斯消元很像但是实际上好写一些。 很重要的思想是贪心。证明不会。 构造:依次考虑,如果没有就插入,有就异或。 取最大值:依次考虑,如果异或之后变大就异或。 合并:log2暴力。 性质:线性基中的元素任意异或不会为0。线性基能异或出所有成功插入进它的元素。 1 struct Base { 2 阅读全文