RQNOJ-302-统计单词个数--区域dp
来源:互联网 发布:软件 地图 编辑:程序博客网 时间:2024/06/08 05:09
思路:
s[i][j]: 在i到j的区间内,有以i开头的字典则为1,否则,为0
sum[i][j]: 在i到j的区间内所包涵的字典的数目
if(s[i][j]==1)sum[i][j]=sum[i+1][j]+1;
else sun[i][j]=sum[i+1][j];
dp[i][j]: 表示在0~j的区间内,分成i份,所包含的字典的总和。
dp[i][j]=dp[i-1][k]+sum[k+1][j](i-2<=k<j)
dp[1][j]=sum[1][j];
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>#include<queue>#include<stack>#include<map>#include<string>#include<stdlib.h>#define INF_MAX 0x7fffffff#define INF 999999#define max3(a,b,c) (max(a,b)>c?max(a,b):c)#define min3(a,b,c) (min(a,b)<c?min(a,b):c)#define mem(a,b) memset(a,b,sizeof(a))using namespace std;struct node{ int u; int v; int w; bool friend operator < (node a, node b){ return a.w < b.w; }}edge[1001];int gcd(int n,int m){if(n<m) swap(n,m);return n%m==0?m:gcd(m,n%m);}int lcm(int n,int m){if(n<m) swap(n,m);return n/gcd(n,m)*m;}char dic[10][201];char str[201];char st[21];int sum[201][201];int s[201][201];int p,k,ss;int main(){ int i,j,n; scanf("%d%d%*c",&p,&k); for(i=0;i<p;i++) { gets(st); for(j=i*20;j<i*20+20;j++) { str[j]=st[j-i*20]; } } n=p*20; scanf("%d%*c",&ss); for(i=0;i<ss;i++) { gets(dic[i]); } int mi,is,ks; for(i=0;i<n;i++) { mi=n; for(j=0;j<ss;j++) { if(str[i]==dic[j][0]) { for(ks=0;ks<strlen(dic[j])&&(i+ks)<n;ks++) { if(str[ks+i]!=dic[j][ks])break; } if(ks==strlen(dic[j]))mi=min(mi,i+ks-1); } } for(is=mi;is<n;is++) { s[i][is]=1; } } for(i=0;i<n;i++) sum[n-1][i]=s[n-1][i]; for(i=n-2;i>=0;i--) { for(j=i;j<n;j++) { if(s[i][j]==1)sum[i][j]=sum[i+1][j]+1; else sum[i][j]=sum[i+1][j]; } } int dp[10][201]; /* for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%2d ",sum[i][j]); } puts(""); }*/ for(i=0;i<n;i++) { dp[1][i]=sum[0][i]; } for(i=2;i<=k;i++) { for(j=0;j<n;j++) { dp[i][j]=0; for(ks=i-2;ks<j;ks++) { dp[i][j]=max(dp[i][j],dp[i-1][ks]+sum[ks+1][j]); } } } cout<<dp[k][n-1]<<endl; return 0;}
- RQNOJ-302-统计单词个数--区域dp
- RQNOJ 302 PID302 / [NOIP2001]统计单词个数(区间dp)
- DP-统计单词个数
- voj1118 统计单词个数 dp
- P1206 统计单词个数dp
- 统计单词个数 (区间DP)
- [洛谷luogu] [NOIP2001T3]统计单词个数 (DP)
- 【划分型DP】统计单词个数
- 【DP总结】【字符串】【统计单词个数】
- 【luogu1026】统计单词个数(dp)
- codevs1040 统计单词个数(区间dp+划分dp)
- wikioi-天梯-普及一等-划分dp-1040:统计单词个数
- ACM 94. [NOIP2001] 统计单词个数(划分dp)
- 【codevs1040】【01NOIPTG】统计单词个数,字符串的划分DP
- 【NOIP2011】统计单词个数 划分性dp*2
- (昨天的)codevs 天梯 统计单词个数 dp
- vc 统计单词个数
- 统计单词个数
- linux远程拷数据
- :nth-child 和 :nth-type-of 的区别
- 采用MVC的设计思想对用户故事进行任务分解
- 设计模式之状态模式
- IOS疯狂基础之MessageUI—短信
- RQNOJ-302-统计单词个数--区域dp
- 获得谷歌扩展程序crx包的方法
- APP-FND-01238
- C语言学习第六天(存储类型、宏)
- error C2662: 不能将“this”指针从“const Node_align”转换为“Node_align &”解决方案
- iOS几个网络库
- ABAP 图片预览
- singleton pattern C# 继承式 模板
- Android 如何使用GPU硬件加速