摘要: "题目链接" 其实这东西很好懂的。。用来维护一次函数。 每个结点存一个值,表示x=这个区间的mid时值最大的函数的编号。 把插入线段的斜率和当前结点的斜率和大小比较来更新左右儿子的值。 查询是实际上是查询从根到这个叶节点链上的最大值。。 cpp include include using names 阅读全文
posted @ 2019-05-24 20:49 Qihoo360 阅读(184) 评论(1) 推荐(0) 编辑
摘要: "题目链接" 手写一下AC自动机(我可没说我之前不是手写的) Trie上dp,每个点的贡献加上所有是他后缀的串的贡献,也就是这个点到根的fail链的和。 cpp include include include include using namespace std; const int MAXK = 阅读全文
posted @ 2019-05-24 15:53 Qihoo360 阅读(183) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 首先想到状压dp,但是$n,m$高达100,怎么压? 容易发现,每行每列最多两个象棋,否则就直接gg了。 一个巧妙的设置状态的方式是,只需要记录到当前行有多少列是放了1个炮和2个炮。 然后每一行有3种选择:不放、放1个、放2个。分情况转移就行了。 cpp include const i 阅读全文
posted @ 2019-05-24 15:08 Qihoo360 阅读(186) 评论(0) 推荐(0) 编辑
摘要: "题目链接" $f[i][j]$表示准考证号到第$i$位,不吉利数字匹配到第$j$位的方案数。 答案显然是$\sum_{i=0}^{m 1}f[n][i]$ $f[i][j]=\sum_{k=1}^{m 1}f[i 1][k] g[k][j]$ $g[i][j]$表示不吉利数字匹配到第$i$位后加一 阅读全文
posted @ 2019-05-24 09:34 Qihoo360 阅读(424) 评论(0) 推荐(0) 编辑
You're powerful!