A. DIY Radar
- 随机两个点,使得两次询问能区分所有101x101x4种情况
B. Word Squared
- 猜结论签到
C. Quoridor
D. Game X
- 不难发现,一定是让正数尽可能多,或者尽可能少。
- 设有 (x) 个正数,(n-x) 个负数。那么凑出的 unordered_pair 个数在 ([inom{x}{2},inom{n}{2}-inom{n-x}{2}]) 之间,且皆可取到,因此有 (k∈[inom{x}{2},inom{n}{2}-inom{n-x}{2}])
- 二分.二连,求出最小的 (x) 和最大的 (x)。
E. 5-Path
- 二分答案,转化为判断是否存在 5-path 问题
- 把5条边分为亲近 (a) 的两条,和亲近 (b) 的两条,以及中间的一条
- 预处理出亲近 (a/b) 的那两条边的信息,扔进桶里
- 枚举中间的一条,用预处理的信息进行判定(保证不能有重复点)
F. Nightmare
- 二分答案,判断线段与多边形是否相交
G. String Transformation
- 考虑每次从k个洞的最优解变换到k+1个洞的最优解,有两种可能:
- 1.使一个字符的洞+1
- 2.使一个字符的洞+2,使另一个字符的洞-1
- 可以证明如果还有其他可能会推出当前不是最优解
H. Employees
做法1
- 枚举每个点在每个时刻进入房间,统计答案
- 分两种情况
- 在该时刻进入大厅后,直接进入房间,此时前方队列中至少有 (k) 个比我大的人
- 在前方时刻进入大厅,现在进入房间,此时前方队列中恰有 (k-1) 个比我大的人
- 具体实现可以预处理出 (f[i][j][k]) (表示前 (i) 大里选了 (j) 个元素,其中第 (k) 个元素一定选的方案的和)
做法2
- 房间里留下的始终为前缀前 (k) 大值。
- 期望可加性,独立考虑 (i) 在 (j) 前出去的概率即可。
- 对于 (t_i<t_j),如果 (i) 在 (j) 前面,一定 (i) 先出,否则枚举 (i) 的位置 (pos_i),(j) 的位置在 ([1,pos_i-1]) 中,而且 (t_j) 是第一个位置到第 (pos_i-1) 个位置中的前 (k-1) 大。
I. Modulo-magic squares
J. Count the Sequences
upsolved.
先 (n:=n-1),容斥有。
(Ans = sum_{S} (-1)^{|S|}inom{n+m-sum_{i∈S}(b^i-c+1)}{m})
按集合大小分类,枚举大小 (k),求出 (F(k)=sum_{|S|=k}(-1)^{|S|}inom{n+m-(c-1)|S|-sum_{i∈S}(b^i)}{m}),(Ans =sum_{k=0}^{m}F(k)),接下来考虑 (F(k)) 的求解。
令 (n+m+(c-1)|S|=A)
(F(k)=sum_{|S|=k}(-1)^{|S|}inom{A-sum_{i∈S}(b^i)}{m}),拆一下组合数
再令 (B=A-sum_{i∈S}(b^i))
(F(k)=frac{sum_{|S|=k 且 sum_{i∈S}b^ileq A} B(B-1)..(B-(m-1))}{m!*(-1)^k})
哇!我想睡觉了,不想做这种恐怖题了。
(B(B-1)..(B-(m-1))) 是个关于 (sum_{i∈S}(b^i)) 的多项式,求之,求出对于满足 (|S|=k 且 sum_{i∈S}b^ileq A) 这个卜条件求出的所有 (S) 求出 ([sum_{i∈S}(b^i)]^x) 就 win 了啊。
(f[i][j][x]) 表示考虑 ({1,2,...,i}) 的 size 为 (j) 的子集 (S),([sum_{i∈S}(b^i)]^x) 之和,蓄力完毕,(A,sum_{i∈S}(b^i)) 看成 (b) 进制数后枚举 LCP 长度!
(f[i][j][x]=f[i-1][j][x]+sum_{t=0}^{x}inom{x}{t}b^{it}f[i-1][j-1][x-t])
解决这种问题得小心架势条爆炸。
summary and replay
- RDC: 划水战术执行的非常到位,全场共 0 次触碰键盘,想题边都沾不着。