省选测试13
A. 同桌的你
没改完,暂咕。
B. 大水题
题意:X非负半轴,给出N个不重点的坐标\(x_i\)种类\(b_i\),求最长区间满足[L,R]中每种点的数量相同或为0,且种数至少为K。N<=1e5,K<=8
首先观察到K很小。
如果不考虑K的限制,那么一段区间合法等价于每种的前缀和的差相等,也就是说可以用相对大小表示。差分后对右端点可以用hash快速查左端点。
由于需要差分,同时加上差分序列长度也无法压缩完整信息,所以在外层\(2^8\)枚举出现的品种集合。
正解复杂度是\(O(8n)\),然而以上如果理想化hash表的复杂度也可过。
PS:考试时差分写挂了,数据太弱拍不出来。
C. 佛罗里达
题意:把n个人分成两队,给出每两个人被分到同一队时的不安值\(T_{i,j}\),定义队A的不安值D(A)为\(\max\limits_{u\in A,v\in A}T_{u,v}\),最小化两队不安值之和。n<=250
看上去有点像《关押罪犯》,n^2枚举A队的不安值,把<=D(A)的全部加到A中,然后从大到小sort加点判断是否为二分图(有初始,并查集不会做),其实到这步思路就很模糊,感觉第一个结论就是错的。。。于是弃了
正解是2-sat
40pts:钦定D(A)<=D(B),枚举D(B),这时D(A)可以二分。
对于点对分类讨论:
1.T<=D(A),无限制
2.D(A)<T<=D(B),至少一个在B中
3.D(B)<T,分开
这样2-SAT求解,复杂度\(n^4logn\)
100pts:优化枚举D(B)
实际上D(B)的取值是\(O(n)\)级别的。
不过想了很久也没能看懂题解,最后只能看着代码yy(哪位打了正解的大神能给我讲下啊kuku)