统计单词个数
来源:互联网 发布:降调软件手机版 编辑:程序博客网 时间:2024/04/29 14:19
出处:NOIP2001TG2 提交:RQNOJ302,VIJOS1118
这题之前有个同学问过我,当时有点不太明白,直接飘过了。后来看了一下网上的思路,之后就落下了。
昨天刚好看到这个题,就按之前的思路写了一下,在VIJOS上交了,AC了。
后面又去RQN交,本以为肯定能过,只是时间不同而已,结果只给了40分。当时就想Vijos数据太水了,那里全是0ms,RQN上面最少27ms,也可能是我的方法没优化的原因。
今天下午把程序重新看了一下,改了个小错误,终于AC了。嘿嘿~~
#include<stdio.h>#include<string.h>#include<algorithm> #include<iostream>using namespace std;const int N=201;const int INF=0x3ffffff;int max(int a,int b){ return a>b?a:b; }int min(int a,int b){ return a<b?a:b; }int len[N],dp[50][N],d[N][N],wlen[10];char str[N],word[7][200];int main(){ int p,s,i,j,k,t,flag; while(~scanf("%d %d",&p,&k)) { str[0]=' '; for (i=0;i<p;i++) scanf("%s",str+1+20*i); p*=20; scanf("%d",&s); for (i=1;i<=s;i++) { scanf("%s",word[i]); wlen[i]=strlen(word[i]); } for (i=1;i<=p;i++) len[i]=INF; for (i=1;i<=p;i++) { for (j=1;j<=s;j++) { if (!strncmp(str+i,word[j],wlen[j])) { len[i]=min(wlen[j],len[i]); } } } memset(d,0,sizeof(d)); for (i=1;i<=p;i++) { for (j=i;j<=p;j++) { flag=0; for (t=j;t>=i;t--) { if (t+len[t]==j+1) { flag=1; break; } } d[i][j]=d[i][j-1]+flag; } } memset(dp,0,sizeof(dp)); for (j=1;j<=p;j++) { dp[1][j]=d[1][j]; } for (i=2;i<=k;i++) { for (j=i;j<=p;j++) { flag=0; for (t=i-1;t<j;t++) { flag=max(dp[i-1][t]+d[t+1][j],flag); } dp[i][j]=flag; } } printf("%d\n",dp[k][p]); } return 0; }
- vc 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- 状态机统计单词个数
- wikioi1040 统计单词个数
- C统计单词个数
- 统计不同单词个数
- 统计单词个数
- acm-统计单词个数
- 17.2统计单词个数
- 统计单词个数
- DP-统计单词个数
- noip2001统计单词个数
- 统计单词个数
- Android:检查网络连接状态
- ArcEngine_CAD(2)查看CAD图层属性
- 单例模式的好处
- SQL注入过程简述
- 跳页检查测试用例设计
- 统计单词个数
- DB2函数大全
- LPSTR
- 关于XML相关内容的一些学习
- js瀑布流布局
- hdu 3367 Pseudoforest (krusual)
- 美国铁路客运公司Amtrak全面推出电子车票
- 1281棋盘游戏(二分匹配+删边)
- 计算线程运行时间