CC's

Back

C#

无脑DP.设状态f(i,j,0/1)f(i,j,0/1)表示已经设置了ii位,用了jj个偶数,第ii位是偶数/奇数.然后

f(i,j,0)=min{f(i1,j1,0),f(i1,j1,1)+1}f(i,j,1)=min{f(i1,j,0)+1,f(i1,j,1)}\begin{aligned} f(i,j,0)&=\min\{f(i-1,j-1,0),f(i-1,j-1,1)+1\} \\ f(i,j,1)&=\min\{f(i-1,j,0)+1,f(i-1,j,1)\} \end{aligned}

i=1i=1作为开始,因为第1位不能算代价.

// missing?
cpp

D#

一个事实是,两棵子🌳的间大小关系不会影响其内部节点的既定关系.

以此,直接dfs,从底层向上构造相对大小顺序.合并时子树间的相对大小没有影响,所以直接前后接在一起就好,再把当前节点插到合适的位置使其满足c的条件. 全部完成后再对节点统一标号.

最开始先标了号,然后越写越麻烦,生气.

Codeforces Round #612 (Div. 2)
https://astro-pure.js.org/blog/codeforces-round-612-div-2
Author Cheng Chen
Published at 2020年1月14日
Comment seems to stuck. Try to refresh?✨