「考试」省选61

T1
dy讲的原题。
建议去翻\(DC\)大神的\(dp\)视频课。

T2
结论题。
一种想法是抽象为一个\(ans+1 n\)的矩阵。
每次从上面一段连续区间向底层走。
维护每一个位置最高的高度是多少就可以得到答案了。
这里用一个队列实现。
每一个位置的队列长度可以用来更新答案。

T3
生成函数题。
考虑容斥。
用走了几条输入边来容斥。
\(dp[i][s]\)为当前在\(i\)点,经过的点集为\(s\)的方案数。
\(f[s]\)为经过的点集为\(s\)的方案数。
\(g[i][s]\)为经过了\(i\)条链的方案数。
\(F[i]\)为经过了\(i\)条链再整张图上的方案数。
于是答案就是\(\sum\limits_{i=1}^{nk}(-1)^{nk-i}F[i]\)
因为经过的输入边个数是\(nk-i\)

posted @ 2020-04-03 19:13  Lrefrain  阅读(127)  评论(0编辑  收藏  举报