5月题目汇总2(5.7---5.13)
2017-05-08 11:51
127 查看
5.7晚
设f(i,j,S) 表示区间[i,j] 的01串最后变成二进制状态S 的最大得分。讨论S 的第一个字符由那些合并而来,那么f(i,j,S)←f(i,t,first)+f(t+1,j,S−first) (t≡ i mod(k−1))
特别的,当x=1或x=k 的时候f(i,j,to(S))←f(i,j,S)+w(S)
思路有点像合并石子,只是不知道高到哪里去了。
5.8晚
维护cnt1,cnt2的方法是,每次加入一个字符都在last节点上累计次数,最后基数排序之后从下到上累加就行了。
最终答案就是∑(Max[x]−Max[pre[x]])∗cnt1[x]∗cnt2[x]
每个节点要维护什么,最后答案是什么。
NO.1 来源: BZOJ 4565 [Haoi2016]字符合并
分类: 区间,状压 dp
简要题解:
注意到长度为len 的01串最后会被合并成长为x=(len−1) mod (k−1)+1 的01串。设f(i,j,S) 表示区间[i,j] 的01串最后变成二进制状态S 的最大得分。讨论S 的第一个字符由那些合并而来,那么f(i,j,S)←f(i,t,first)+f(t+1,j,S−first) (t≡ i mod(k−1))
特别的,当x=1或x=k 的时候f(i,j,to(S))←f(i,j,S)+w(S)
反思
状态还是很好想到,关键是抓住什么来转移。发现长度的性质其实很有用。思路有点像合并石子,只是不知道高到哪里去了。
5.8晚
NO.2 来源:BZOJ 4566 [Haoi2016]找相同字符
分类: 后缀自动机
简要题解:
对这两个串建一个广义后缀自动机,每个节点记录Max,cnt1,cnt2,分别表示该节点最长串的长度,第一个字符串的到访次数,第二个字符串的到访次数。维护cnt1,cnt2的方法是,每次加入一个字符都在last节点上累计次数,最后基数排序之后从下到上累加就行了。
最终答案就是∑(Max[x]−Max[pre[x]])∗cnt1[x]∗cnt2[x]
反思
对于字符串的统计为题,后缀自动机是很有力的方法。每个节点要维护什么,最后答案是什么。
相关文章推荐
- 5月题目汇总(5.22---5.28)
- 5月题目汇总1 (4.30-5.6)
- C/C++ 笔试、面试题目大汇总
- 近期部分题目汇总
- LeetCode All in One 题目讲解汇总(持续更新中...)
- 面试之C++题目汇总7
- HDOJ 入门级深搜DFS 题目汇总(持续更新中),一路打怪升级
- 前端面试题目汇总
- 《面试》--网易提前批题目汇总
- 面试题目汇总
- C/C++ 笔试、面试题目大汇总
- C/C++ 笔试、面试题目大汇总
- 操作系统---基础题目汇总十二
- 2011年10月10日16:22:36百度面试题目汇总☆参考答案随后补充☆
- C/C++ 笔试、面试题目大汇总
- C/C++ 笔试、面试题目大汇总2 (转)
- LeetCode之Stack题目汇总
- POJ 并查集 题目汇总 ——czyuan原创
- 图论和搜索题目推荐<汇总>
- 一条每n行汇总的SQL题目