Codeforces Round 635 (Div.2)
A. Ichihime and Triangle
Solution
用 $b,c,c$ 一定能构成三角形。
Code
1 |
|
B. Kana and Dragon Quest game
Solution
能用第一种操作就用第一种操作,否则用第二种操作。因为如果对于一个数,用第一种操作不能使之减小,那么对于小于它的数,用第一种操作更不可能使之减小。
Code
1 |
|
C. Linova and Kingdom
Solution
首先观察出一个结论:如果一个点被选了,那么它的子树所有点一定都会被选,否则的话,选子树中的点显然比选它更优。
于是乎,如果我们现在选了点 $x$,那么答案加上 $dep[x]-(sz[x]-1)$,其中 $dep[x]$ 表示 $x$ 的深度,$sz[x]$ 表示 $x$ 子树大小。所以要使答案最大,把所有点按照 $dep[x]-(sz[x]-1)$ 降序排序即可。
Code
1 |
|
D. Xenia and Colorful Gems
Solution
固定 $z$,二分找到 $z$ 的左右最近的 $x,y$,更新答案。
根据 $x,y,z$ 的轮换对称性,做 $3$ 次上述过程。
Code
1 |
|
E. Kaavi and Magic Spell
Solution
区间 $dp$.
设 $dp[i][j]$ 表示用 $s[1…j-i+1]$ 匹配了 $t[i…j]$ 这一段字符的方案数,其中,超过 $m$ 的部分任意字符都算作匹配。那么容易写出 $dp$ 方程。
答案就是 $\sum\limits_{i=m}^ndp[1][i]$.
Code
1 |
|
F. Yui and Mahjong Set
Solution
【参考官方题解】题解讲的挺清楚了,下面仅仅写一写式子罢了。
按照 $n-1,n-2,\cdots,4,3,1,2,1$ 的顺序询问,记录下每次回答的差值 $d_1[i],d_2[i]$,那么:
最后一次询问中,$d_1[0]=C_{a_1+1}^2=\cfrac{(a_1+1)a_1}{2}$,
所以 $a_1=\lfloor\sqrt{d_1[0]\times2}\rfloor$.
对于两次询问 $1$,有:$d_2[0]=(a_2+1)(a_3+1),d_2[2]=a_2(a_3+1)$,
所以 $a_3=d_2[0]-d_2[2]-1,a_2=\cfrac{d_2[2]}{a_3+1}$.
对于询问 $2$,有:$d_2[1]=(a_1+1)(a_3+1)+(a_4+1)(a_3+1)$,
所以 $a_4=\cfrac{d_2[1]-(a_1+1)(a_3+1)}{a_3+1}-1$.
对于询问 $i(3\leq i<n-2)$,有:$d_2[i]=a_{i-1}(a_{i+1}+1)+(a_{i+1}+1)(a_{i+2}+1)+a_{i-2}a_{i-1}$,
所以 $a_{i+2}=\cfrac{d_2[i]-a_{i-1}(a_{i+1}+1)-a_{i-2}a_{i-1}}{a_{i+1}+1}-1$.
对于询问 $n-2$,有:$d_2[n-2]=a_{n-3}(a_{n-1}+1)+(a_{n-1}+1)a_n+a_{n-4}a_{n-3}$,
所以 $a_n=\cfrac{d_2[n-2]-a_{n-3}(a_{n-1}+1)-a_{n-4}a_{n-3}}{a_{n-1}+1}$.
Code
1 |
|
Codeforces Round 635 (Div.2)
http://xyfjason.github.io/blog-xcpc/2020/04/16/Codeforces-Round-635-Div-2/