CF1265

$Div.2$

A Beautiful String

如果有两个相邻字母相同,则肯定无解.

否则,每次用合适的方法填好连续的一段问号就可以了.

code

B Beautiful Numbers

考虑从大到小加入每个数,如果在加入第 $i$ 个数后,加入的数的位置形成了一段连续的区间,则第 $i$ 个答案为 $1$ .

记录一下加入的数中,最左边的位置 $L$ 和最右边的位置 $R$ ,若 $R-L+1=i$ ,则是连续的区间.

code

C Beautiful Regional Contest

把同一种分数的所有人看成一个数,数字大小为这些人的个数.

从大到小枚举有多少个人有奖牌,检验是否有合法解.

在有奖牌的人中,至少要有 $3$ 种分数,取分数最高的那些人获得金牌,二分出多少人得银牌时,金牌数小于银牌数.

剩下的就是铜牌,再检验一下金牌数是否小于铜牌数.

code

D Beautiful Sequence

$0$ 只能和 $1$ 相邻, $3$ 只能和 $2$ 相邻.

所以当 $0$ 的数目比 $1$ 多时,答案只可能是 $010101\dots010$ 的形式,否则无解, $3$ 与 $2$ 同理.

否则,可以在开头放下一段 $0101\dots 01$ ,在末尾放下一段 $23\dots2323$ .

此时还剩下若干个 $1$ 和若干个 $2$ 没有放.

若两者数目相同,就直接在中间放下 $2121\dots21​$ .

若 $1$ 的数目比 $2$ 的数目多 $1$ ,就在最开头放个 $1$ ,中间放下 $2121\dots21$ .

若 $2$ 的数目比 $1$ 的数目多 $1$ ,就在最后放个 $2$ ,中间放下 $2121\dots21$ .

其余情况无解.

code

E Beautiful Mirrors

设 $E(i)$ 表示当前应该去问第 $i$ 面镜子时,期望的天数.

边界有 $E(n+1)=0$ ,转移有 $E(i)=\frac{p_i}{100}E(i+1)+\frac{100-p_i}{100} E(1)+1$ .

从前往后推出每个 $E(i)=k_i\cdot E_1+b_i$ ,再根据 $E(n+1)=0$ 解出 $E_1$ .

code

F Beautiful Bracket Sequence (easy version)

考虑给出一个括号序列时,怎样计算它的深度.

如果最左边是 ) ,就把它删掉.

如果最右边是 ( ,就把它删掉.

如果最左边是 ( ,最右边是 ) ,就把它们同时删掉,并且让深度 $+1​$ .

设 $f(i,j)$ 表示 $[i,j]$ 这段括号序列对答案的贡献,根据这个过程来 $dp$ 即可.

code