BIT 校赛 2.5h场第一场总结
- solved 5/6 , rk 5
我又来送罚时辣(11发)
流程
其实是在各个 CF 赛中选的原题,我 B,C 题做过写过,E 题看过思路。写起来就得心应手了。这里只说 D,E 题的拉跨历程。
D 题最开始想的是一棵树,不构成树无解,但样例 1 就错了。再仔细一想是个二分类问题,每个车有朝左朝右,于是就想 2-sat 去了,但是忘了咋写了......最后才想到二分图。最后跑拓扑偏序时判环又写错了,nm。
E 题我还看过原,写这么久,挂这么多发!大部分时间用在求欧拉路上了,一直想不到不用建图的做法(其实有)。最后偶数图还忘删边了,本地机跑大数据还爆栈了,还以为写挂了......
F 好高深的题。
部分题解
D - Cars
题目链接
一个性质:有要求的车方向必须相对,同相而行的车不满足任何性质。
由这个性质我们可以构造二分图来确定车的朝向。
接着根据题目的限制,若两车分别朝右,朝左,要求相遇,则前者的位置必须在后者的前面,这就确定了偏序关系,建有向图跑拓扑序就行,要注意判断该图是不是 DAG。
E - Turtle and Multiplication
题目链接
我们设不同的数字有 \(n\) 种,假设不存在两对不同的数字使得乘积一样,那最多可以写出 \(\binom{n}{2} + n - \frac{n-2}{2} [n ~ mod~2 = 0] + 1\) 个数字,前者是满图的欧拉回路长度,同时要去掉偶数的情况,需要删掉 \((2,3),(4,5)\cdots (n-2,n-1)\) 这些边以使得存在欧拉回路。
为了满足我们的假设,\(n\) 种数用质数就行,筛一遍发现质数数量是够的,最大的 \(n\) 需要 \(10^3\) 左右个质数。
那求欧拉回路就行了。
F - Game of Questions
题目链接
很厉害的题。
每道题只能出现一次的限制比较麻烦,但其实一道题选完后,在后来的任何时刻再选这道题不会对选手产生任何影响,因为不会做的已经被淘汰了,会做的还是会做。因此我们不需要记录哪些题目被使用了。
我们设 \(f_S\) 表示当前剩余 \(S\) 集合的选手,Alice 最终能胜出的概率,答案就是 \(f_{2^m-1}\) 。
随着题目推进,当前选手集合会逐渐取其子集,这启示我们从子集进行转移。
考虑转移,对于一个问题 \(a_i\) ,从 \(f_s\) 可以转移到 \(f_{s \And a_i}\)。把这些问题合并起来,设 \(g_{s,t}\) 表示将 \(s\) 状态变成 \(t\) 状态的问题数量,有转移:
即:分母为能将 \(s\) 改变的问题数,随机选择一个问题进行转移。
现在我们求 \(g_{s,t}\) :对于 \(s\) 二进制为 \(0\) 的位置 \(x\),有 \(g_{s \cup x,t}->g_{s,t}\) 和 \(g_{s \cup x, t \cup x}->g_{s,t}\)。直接转移是 \(O(3^m \cdot m)\) ,精细转移可以优化成 \(O(3^m)\)。
复杂度为 \(O(m \cdot 3^m)\) 。
用多项式好像可以优化到 \(O(m^2 \cdot 2^m)\) , 回头来补一下。