[AtCoder]Grand Contest 028
A Two Abbreviations
题意:给定两个串,长度为\(N\)的\(A\)和长度为\(M\)的\(B\),一个串\(S\)被称为好的,当且仅当:这个串的长度\(L\)能被\(N,M\)整除,且\(S_{i*L/N} = A_i, S_{j*L/M} = B_j\),求最短的好的串。
显然这个题中\(L\)应该是\(lcm(N, M)\),然后考虑\(A\)和\(B\)在\(S\)中重叠的部分就行了。
B Removing Blocks
题意:给定一个数列,每次删除一个数,定义这次操作的代价为和这个数连接的数的和,两个数\(a_i,a_j\)连接当且仅当\(\forall i\le k\le j, a_k\)都没有被删除。求删完所有数之后的期望收益。
定义\(P(i,j)\)为在\(a_i\)删除时\(a_j\)和\(a_i\)连接的概率,这样,\(a_j\)的期望贡献次数就是\(\sum_{i=1}^n P(i,j)\)。如果在\(a_i\)删除时\(a_j\)和\(a_i\)连接,那么\(a_i\)一定是\(a_{i..j}\)中第一个被删除的,所以\(P(i,j) = 1 /(|i-j|+1)\),这样只用求一下\(1..n\)逆元的前缀和就能\(O(n)\)的计算答案了。
C Min Cost Cycle
题意:有一些点,他们有权值\(A,B\),一条有向边\((i,j)\)的权值是\(\min(A_i, B_j)\),找一条覆盖所有点的有向环,使其权值最小。
我们定义点的类型如下:
- \(X\):这个点贡献\(A,B\)。
- \(Y\):这个点只贡献\(A\)。
- \(Z\):这个点只贡献\(B\)。
- \(W\):这个点没有贡献。
由此,我们发现,题目要求的环只有如下三种情况:
- 全是\(Y\)点
- 全是\(Z\)点
- \(X\)点和\(W\)点的数量为\(\ge1\)且相等。
前两种情况很好算,最后一种情况可以这样计算:将\(A_1..A_n,B_1..B_n\)升序排序,如果前\(N\)个里存在一个\(v\)使得\(A_v,B_v\)都在前\(N\)个中,显而易见直接取前\(N\)个是合法且很优的。否则,对于每个点,我们让它是\(W\)。然后贪心的附加上剩下的\(N-1\)个点(取前\(N+1\)或\(N+2\)个),取答案的最小值即可。
D Chords
题意:环上有\(2N\)个等距的点,用\(N\)个线段连接这些点,定义两个点联通为这两个点可以在只经过这些线段的情况下互相到达。现在已经画了\(K\)个线段,问最后联通块的数量的期望。
E High Elements
题意:给定一个\(1..N\)的排列\(P\),一个长度为\(N\)的\(01\)序列是好的当且仅当:构造两个序列\(X,Y\),一开始,两个序列都是空的,如果\(S\)的第\(i\)个数是\(0\),则\(P_i\)放入\(X\)中,否则放入\(Y\)中,且\(X,Y\)中高的元素数量一样。一个元素\(a_i\)是高的,当且仅当对于任意\(j<i\),都有\(a_j<a_i\)。
F Reachable Cells
题意:给定一个矩阵\(A\),\(A_{i,j}\)为\(1..9\)或\(\#\),两个点是联通的,当且仅当可以从一个点,只向下或向右,不经过填有\(\#\)的格子,可以到达另一个点。求出所有联通的点的权值的乘积的和。