Codeforces 1548
题目传送门:Codeforces 1548
B Integers Have Friends
首先考虑相邻的两个数同余,及\(a_i \equiv a_{i+1} \equiv k \pmod m\),转化一下就是\(a_i - a_{i-1} \equiv 0 \pmod m\),由此发现\(m\)需要满足的性质就是\(m|(a_i-a_{i-1})\),对于连续多个数,\(m|\gcd(a_l,a_{l+1},\cdots,a_r)\)。由此性质可以考虑对于固定的\(l\),倍增找出最大的\(r\),类似\(ST\)表的方法预处理\(\gcd\)的倍增数组即可。
Submisson
C The Three Little Pigs
原题等价于求\(\sum_{i=1}^{n}\binom{3i}{x}\),显然对于每组询问都可以\(\mathcal O(n)\)计算。
考虑一个很神的\(DP\),设\(f(x,t),t\in \{0,1,2 \}\)表示\(\sum_{i=0}^{n-1}\binom{3i+t}{x}\),那么答案就是\(f(x,0)+\binom{3n}{x}\),考虑转移:
\(f(x,0)+f(x,1)+f(x,2)=\sum_{i=0}^{3n-1}\binom{i}{x}=\binom{3n}{x+1}\)
\(f(x,1)=f(x-1,0)+f(x,0)\)
\(f(x,2)=f(x-1,1)+f(x,1)\)
其中第一个式子用到了“上指标求和”的技巧,第二第三个式子都是组合数的递推,发现是一个三元一次方程组,解一下方程直接转移即可。
Submission
D Gregor and the Odd Cows
本题关键的第一步要用到\(\text{Pick}\)定理:\(S=A+\frac{B}{2}-1\)
其中\(S\)表示多边形面积,\(A\)表示内部格点个数,\(B\)表示边上格点个数。
具体看官方题解
Submission for D1
Submission for D2
E Gregor and the Two Painters
考虑对于每一个连通块选出一个代表节点,发现可以选择这个连通块中权值最小的点,优先靠上靠左。接下来考虑一个节点是代表节点的等价条件。记\(prea_i\)表示\(i\)之前第一个\(\le a_i\)的位置,\(sufa_i\)表示\(i\)之后第一个\(<a_i\)的位置,类似的定义\(preb_i,sufb_i\),记\(Ma_i=\max(\max([prea_i,i-1]),\max([i+1,sufa_i]))\),类似定义\(Mb_i\),那么一个点是代表节点的等价条件就是:
\(a_i+b_j \le x\)
\(Ma_i+b_j > x\)
\(a_i+Mb_j > x\)
后两个条件的意思就是因为有较大的只存在,使得\(i\)不能走到\(prea_i\)或\(suba_i\),\(j\)不能走到\(preb_j\)或\(sufb_j\),由此对不等式稍作变形即可得到二维偏序的限制,树状数组即可。
Submission

浙公网安备 33010602011771号