省选模拟13
Posted hzoi-cbx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了省选模拟13相关的知识,希望对你有一定的参考价值。
A. 同桌的你
考试的时候大概一上来就会了,然而感觉非常麻烦,不想打。等到最后剩1个半小时的时候开始打,到最后也没调出来,非常自闭。
不难发现将关系连边得到的是一棵基环树,所以可以考虑断掉环上任意一条边,然后分选择这条边和不选这条边分别做一次树形dp即可。
对于输出方案,考虑记录转移的前驱,之后再dfs一遍输出答案。
B. 大水题
考虑枚举每一种颜色方案,将所有颜色的数量与第一种颜色的数量做差,那么区间[i,j]合法的条件是[1,i]和[1,j]差分之后相同,可以使用hash来完成这个过程。
然而暴力的复杂度是$O(n*2^8)$,听上去就很不对。
所以考虑优化。
对于一个确定的右端点,可能有贡献的方案只有8种,所以考虑只维护这8种方案。
枚举右端点,在右端点右移的时候,找到当前右端点颜色的前驱,只需要修改这一段即可。
复杂度均摊$O(8n)$
C. 佛罗里达
考场上大概想到了40分的暴力做法,可是没有想到2-sat,以为并查集也能实现这些操作。
考虑枚举其中一个集合的权值大小,对于另外一个集合权值显然可以二分,考虑如何检验是否存在合法解。
将边按照与两个集合权值大小的关系分类,分别对应随便选,不同时选,选一个,是显然的2-sat模型,tarjan判断即可。
考虑如何优化这个东西。
求出来一棵最大生成树,那么生成树上的边一定可以作为集合的权值。
否则,将树黑白染色,若某一条非树边连接了两个颜色不同的点,那么必然不是最大的。
所以,集合的权值只能是树边或者全部为颜色相同的点时的贡献。
枚举即可,$O(n^3logn)$
以上是关于省选模拟13的主要内容,如果未能解决你的问题,请参考以下文章