《联盟训练补》
E:
单调栈维护的题,比赛的时候没想到,线段树写了很久,但是中间没理清。
这题线段树也能做,但是要麻烦一些。
我们在栈中维护一个栈,尽量让栈顶的元素大,也就是说如果这个元素后面还有这个元素,且这个元素不在栈中。
并且小于栈顶的元素,我们就去看栈顶的元素后面还有没有,如果有我们就把栈顶元素弹出,把这个更小的压入。
这样栈顶的元素变小了,原来那个栈顶的元素在序列中的位置就靠后了。
B:
有想到二分图但是没想的很清楚。
最大独立集太久没做了所以不是很敏感。
对题意进行剖析之后就可以发现是个二分图模型,求最大独立集。
关键在二分图的构造:
先思考转化成二分图后,我们左右可以匹配的应该满足什么?要可以转化。
所以我们对可以转化的进行连边,然后再用染色法去构建二分图。
因为题目保证一定有解了,那么就说明必定能染色成功。
然后就可以求最大独立集 = n - 最大匹配。