Codeforces Round #584 - Dasha Code Championship - Elimination Round (rated, open for everyone, Div. 1 + Div. 2)
遗憾:G1在最后一分钟想出了正解,前面胡了不知道多久的假算法。。
E2
这是一道DP题,考试的时候一直没有想到,E1在用暴力做
把装压DP想到以后在加一个预处理
枚举子集的子集是
3
n
3^n
3n的,可以用组合数
(
2
+
1
)
n
(2+1)^n
(2+1)n证
mask为一个子集
for(int i=mask;i;i=mask&(i-1)){
...
}
F
首先是拆点的思想,也就是把长度为
n
n
n的边中间加
n
−
1
n-1
n−1个点
然后是分层
最后是并点的思想,假如
a
a
a->
b
b
b->
c
c
c,
a
a
a->
d
d
d->
e
e
e,val(
a
a
a->
b
b
b)=val(
a
a
a->
d
d
d),可以把
d
d
d的所有出边合并到
b
b
b上,防止其分支过多,难以处理,但是要注意要更新
d
d
d的答案
最后贪心即可
Codeforces Round #585 (Div. 2)
E
在psc233的点拨之下,才想明白两种颜色间的贡献可以独立计算。
这个我试着想过,但觉得不对,是因为我当时的两种颜色还在原数列中考虑,而不是单独分离出来
发现这个以后状压就很好写了
一些图片记录