T20200902
T1 石头剪刀布(rps)
那么,我们就枚举最后赢得人是谁
然后归并保证字典序最小
Code
1 |
|
T2 投票(vote)
将 \(p_i\) 从小到大排好序,则存在一个最优方案,其中选择的同学是一段前缀和一段后缀
证明:
假设有一个选择的同学,他前后都存在未选的同学,考虑固定其他选中的同学时这个同学的概率的贡献,是一个一次函数,所以换成前后一定不劣。
Q.E.D
现在的问题是,对 \(\forall i\),求出选择前\(i\)个和后\(k-i\)个时平票的概率
一个想法是支持插入删除的 \(dp\),但有精度问题
\(pre_{i,j},\;suf_{i,j}\)表示选择前/后\(i\)个同学,有 个投”好”的概率
时间复杂度\(O(n)\)
Code
1 |
|
T3 工厂(factory)
还没有改
首先把问题转化为二分图模型,左边 \(n\) 个点表示工人,右边 \(n\) 个点表示机器,左右两个点有边当且仅当对应工人会操作对应机器。无论哪种情况下所有机器都能有人操作,就等价于,任意一个极大匹配都是完美匹配
考虑问题的一个弱化版本:判断是否任意一个极大匹配都是完美匹配
观察发现,任意一个极大匹配都是完美匹配\((a)\) ,如果任意一个联通块都是左右点数相等的完全二分图\((b)\)。
证明:
从\(b\)推出\(a\)是显然的,下面只用证明从\(a\)推出\(b\)。
反证法。
假设存在一张二分图,存在一个联通块不是左右点数相等的完全二分图,同时满足任意一个极大匹配都是完美匹配。如果这个联通块左右点数不相等,那么它就不存在完美匹配,显然矛盾。否则这个联通块不是完全二分图,设左边的\(a\)点和右边的\(b\)点之间没有边,随便找一条从\(a\)到\(b\)的简单路径,记作\(p\)。选择\(p\)上的奇数边,再随便选一些边构造一个极大匹配,那么这个极大匹配必定是完美匹配。把奇数边改成偶数边,其他的边不变,那么除了\(a,b\)以外的点都在匹配上,所以得到了一个非完美匹配的极大匹配,矛盾。
Q.E.D.
回到原问题,对每个联通块求出它在左右的点数,记作\((x_i, y_i)\) ,现在的问题相当于,将 \((x_i,y_i)\) 分成若干个集合,\(\forall s\) 满足\(\sum_{i\in s}x_i=\sum_{i\in s}y_i\),最小化 \(\sum_s(\sum_{i\in s}x_i)^2\)。
状压 \(dp\)。 \(dp_{s,i}\)表示集合 中已经划出的满足要求的集合的 \(\sum x=i\) 的最小代价。
转移就枚举 \(x\),从\(dp_s\) 转移到 \(dp_{s\cup\{x\}}\)。
对所有相同的 \((x_i,y_i)\) 只用关心个数,当 \(n=30\) 时,本质不同的集合个数的最大值是 \(173032\) ,可以通过本题。
Code
1 |
|