雅礼集训Day3-难题选讲
TC SRM558 div1 1000pts
这道题很显然是个最小割,(u,v,w)代表边 我当时想到的程度是:先将棋盘黑白染色,白左黑右,x表示白,y表示黑。(s,x1,花费),(x1,x2,代价),(x2,y2,INF),(y2,y1,代价),(y1,t,花费), 然后就不知道该怎样下去了,发现题解多建了条(x1,y1,INF),恩,挺妙的,认真yy下,这条边保证了对于一个点来说,要么断掉s,x1,表示买这个点,要么相连的四个点都选了,要么这个点不选,不管其他的点。
TC SRM561 div1 1000pts
最短路径一定是虚树的所有边总长*2-直径,这两部分可以分开算我们可以考虑每条边的贡献,第一部分就枚举每条边,算一下将这条边断开后两条边分别有多少个点,组合数搞一搞就好。对于第二部分,我们枚举下两个端点,如果这两个没法成为直径,那么就一定有一个点到达这两个之一的距离更大,我们就可以dfs下去,判一判哪些点能加入集合即可
TC SRM563 div1 950pts
我一开始想的是容斥,然而很显然复杂度gg。
这道题很重要的一个性质是,如果x和y不能满足,y和z不能满足,那么x和z也不能满足.
证明:如果x和z能满足,那么因为y和z不能满足,所以按照“使x和z满足的那个行走方案”来移动“y和z的话”,y最后的状态(是否出去)和x一定是相反的,所以我们移动x和y时,也用这一套方案,就是满足的。与x和y不能满足矛盾,得证。
因此我们可以用冰茶集来维护不能满足的集合。
TC SRM564 div1 850pts
这道题实际上很傻,很显然是要逐位考虑的。
考虑最高的二进制位,很显然只有Ai这一位=1的时候才可以被考虑,为了方便,不妨找最大的那个数,那么他就有两种选法,如果选1,那么就将这一位异或。如果选0的话,那么接下来就是随便选了。(当然我们还是要保证题目限制的,那么做一个简单的dp就ok了。