只写div1的
A 大意:从所给数集中找出一个最大子集,该子集中任意的一对元素x,y,均不满足x=ky
简单的贪心,先排序然后从小到大处理,若存在a,则选择a,不选择ka。
B 大意:给定一棵带权树,每次可以选取包括节点1的一棵子树,使其所有点权±1,问最少操作次数使得所有节点点权为0。
另add[x],sub[x]分别代表x结点被加/减操作了多少次。可知对于任意结点u,v,v为u的儿子结点,有add[u] >= add[v],sub[u] >= sub[v]。
实际上令a = max{add[v] | v是u的儿子结点}, b = max{sub[v] | v是u的儿子结点}, val[u]为u的初始值,t = val[u]+a-b。若t>0 则有 add[u] = a, sub[u] = b+t,若t<0则有add[u] = a+(-t), sub[v] = b。
则可以使用dfs进行求解。
C 大意:在平面内给定一些圆心,时间t时所有圆的半径即为t。求出所有的圆构成一个封闭的无空心图形的时间。
To be continued…