7.16后记

听不懂(悲)

DP知识

刷表和填表

Sleeping Cows P

主要难点在提前钦定不用来匹配的牛,状态加一个0/1,代表当前点之前是否有被钦定的牛

若当前为牛棚,则

\(f_{i,j,0}=f_{i−1,j,0}+(j+1)f_{i−1,j+1,0}\)

\(f_{i,j,1}=(j+1)f_{i−1,j+1,1}\)

若当前为牛牛,则

\(f_{i,j,0}=f_{i−1,j−1,0}\)

\(f_{i,j,1}=f_{i−1,j,0}+f_{i−1,j,1}+f_{i−1,j−1,1}\)

不写滚动数组过法:关long long,只在乘法时乘1ll

构造数组

\(j+k+l=m\)

\(2*j+l=\sum b_i\)

img

Paired Up P

转移互不相交

记失配的牛

img

但复杂度是三维的,枚举i,j,l

所以要前缀和优化

img

Maximizing Root

从下往上

Swap and Maximum Block

思路:下标减1,做 01tire

从下往上第 k+2 层的两颗子树互换即可

\(f_{u,s,0/1/2/3} \rightarrow f_{u,s',*}\)

s:子树有没有被翻转,01串

s':\(0/1 + s\)

0/1/2/3:总和,最大前缀和,最大后缀和,最大子段和

密集子图

bfs

posted @ 2023-07-16 20:15  Badnuker  阅读(23)  评论(0)    收藏  举报