【NOIP2011】统计单词个数 划分性dp*2
2016-11-09 19:54
387 查看
【NOIP2011】统计单词个数
dp[i][k] 代表前 i 个字母分成 k 段的最大单词数。
w[i][j] 代表 区间[i,j]的最大单词数。
所以,先处理出 w, 再处理 dp。
w[i][j] 不能共同前缀, 所以从后往前更新,验证前缀。
w[i][j] = w[i+1][j]+1 (当存在以i开头的单词完全在 [i,j] 内)
w[i][j] = w[i+1][j] (other cases)
然后 dp[i][k] = max(dp[i][k], dp[j][k-1]+w[j+1][i]);
谢谢DQS的学习资料!
dp[i][k] 代表前 i 个字母分成 k 段的最大单词数。
w[i][j] 代表 区间[i,j]的最大单词数。
所以,先处理出 w, 再处理 dp。
w[i][j] 不能共同前缀, 所以从后往前更新,验证前缀。
w[i][j] = w[i+1][j]+1 (当存在以i开头的单词完全在 [i,j] 内)
w[i][j] = w[i+1][j] (other cases)
然后 dp[i][k] = max(dp[i][k], dp[j][k-1]+w[j+1][i]);
谢谢DQS的学习资料!
#include <cstdio> #include <cstring> #include <iostream> #include <cstdlib> using namespace std; #define MAXN (10) #define MAXS (233) int w[MAXS][MAXS], dp[MAXS][MAXS]; string str; string wd[MAXN]; int main() { int T; cin >> T; while(T --) { str = ""; memset(dp,0,sizeof(dp)); memset(w,0,sizeof(w)); int p, K; cin >> p >> K; string t; for(int i = 1; i <= p; ++ i) cin >> t, str += t; int s; cin >> s; for(int i = 1; i <= s; ++ i) cin >> wd[i]; int n = str.length()-1; for(int i = n; i >= 0; -- i) { for(int j = i; j <= n; ++ j) { int minlen = j-i+1; for(int k = 1; k <= s; ++ k) { if((int)wd[k].length() > minlen) continue; if(str.substr(i,minlen).find(wd[k])) {w[i][j] = w[i+1][j]; continue;} w[i][j] = w[i+1][j]+1; break; } } } for(int i = 0; i <= n; ++ i) dp[i][1] = w[0][i]; for(int i = 0; i <= n; ++ i) for(int k = 2; k <= K; ++ k) for(int j = k-1; j < i; ++ j) dp[i][k] = max(dp[i][k], dp[j][k-1]+w[j+1][i]); printf("%d\n", dp [K]); } return 0; }
相关文章推荐
- NOIP2011-普及组复赛-第二题-统计单词数
- NOIP2011统计单词数
- [noip 2011普及组No.2] 统计单词数
- [洛谷luogu] [NOIP2001T3]统计单词个数 (DP)
- noip2011 统计单词数 (模拟)
- 【模拟】[NOIP2011普及组]统计单词数
- ACM 94. [NOIP2001] 统计单词个数(划分dp)
- noip2011普及组:统计单词
- 【日常学习】【字符串处理】noip2011普及组第2题 统计单词数题解
- 【模拟】[NOIP2011普及组]统计单词数
- NOIP 2011 普及组 复赛 stat 统计单词数
- 05:统计单词数【NOIP2011复赛普及组第二题】
- RQNOJ 302 PID302 / [NOIP2001]统计单词个数(区间dp)
- 题解 NOIP2011 普及组 统计单词数
- noip2011普及组——统计单词数
- noip2011 统计单词数 T2题解
- (昨天的)codevs 天梯 统计单词个数 dp
- RQNOJ PID302 / [NOIP2001]统计单词个数 (动态规划)
- 2557. 【NOIP2011模拟9.9】单词分类 (Standard IO)
- 洛谷P1026&NOIP2001 统计单词个数