《联盟训练补》

E:

单调栈维护的题,比赛的时候没想到,线段树写了很久,但是中间没理清。

这题线段树也能做,但是要麻烦一些。

我们在栈中维护一个栈,尽量让栈顶的元素大,也就是说如果这个元素后面还有这个元素,且这个元素不在栈中。

并且小于栈顶的元素,我们就去看栈顶的元素后面还有没有,如果有我们就把栈顶元素弹出,把这个更小的压入。

这样栈顶的元素变小了,原来那个栈顶的元素在序列中的位置就靠后了。

B:

有想到二分图但是没想的很清楚。

最大独立集太久没做了所以不是很敏感。

对题意进行剖析之后就可以发现是个二分图模型,求最大独立集。

关键在二分图的构造:

先思考转化成二分图后,我们左右可以匹配的应该满足什么?要可以转化。

所以我们对可以转化的进行连边,然后再用染色法去构建二分图。

因为题目保证一定有解了,那么就说明必定能染色成功。

然后就可以求最大独立集 = n - 最大匹配。

原文地址:https://www.cnblogs.com/zwjzwj/p/14506791.html