数目nullRQNOJ-302-统计单词个数--区域dp
改章节是一篇关于数目null的帖子
思路:
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;
}
文章结束给大家分享下程序员的一些笑话语录: 一个合格的程序员是不会写出 诸如 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去。
数目nullRQNOJ-302-统计单词个数--区域dp相关推荐
- codevs1040统计单词个数(区间+划分型dp)
1040 统计单词个数 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给出一个长度不超过2 ...
- 【codevs1040】【01NOIPTG】统计单词个数,字符串的划分DP
1040 统计单词个数 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给出一个长度不超过200的 ...
- hadoop 文本统计一个字符的个数_hadoop统计单词个数 - 卡饭网
hadoop入门之统计单词在文件中出现的个数示例 hadoop入门之统计单词在文件中出现的个数示例 Linux环境:CentOs6.4 Hadoop版本:hadoop-0.20.2 内容:统计hado ...
- 开发可统计单词个数的Android驱动程序(2)
开发可统计单词个数的Android驱动程序(1) 五.指定与驱动相关的信息 虽然指定这些信息不是必须的,但一个完整的Linux驱动程序都会指定这些与驱动相关的信息.一般需要为Linux驱动程序指定如下 ...
- 统计单词个数(划分型)
codevs 1040 统计单词个数 2001年NOIP全国联赛提高组 题目等级 : 黄金 Gold 题目描述 Description 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该 ...
- c语言编程统计单词的个数,使用c语言如何统计单词个数
使用c语言如何统计单词个数 发布时间:2020-04-21 13:58:58 来源:亿速云 阅读:207 作者:小新 使用c语言如何统计单词个数?相信有很多人都不太了解,今天小编为了让大家更加了解Go ...
- python输入一个英文句子 输出单词个数_编写程序,给出一个英文句子,统计单词个数。_学小易找答案...
[简答题]叙述pass语句的作用. [简答题]吹风机不工作,可以用万用表检测吗?在网上搜索关键词,吹风机不工作怎么办? [单选题]以下代码运行结果正确的是哪一项?() x=2 if x:print(T ...
- C语言-统计单词个数
目录 1 算法思想 2 实现1 3 实现2 1 算法思想 读取输入进来的一个字符串,统计其中单词的个数,由于每个单词字母不一样,长度不一样,所以来依靠识别单词来统计单词数是比较难的,下面观察一个字符串 ...
- python统计单词个数算法_python 统计单词个数和频次
开始学习python,习题需要统计单词个数和频次.百度找到的代码好像都有问题.自己写了一个,调试通过. 环境:python: 3.9.1 64bit : pycharm: 2020.2 电脑 wi ...
最新文章
- Java做爬虫也很牛
- quick-cocos2d-x教程12:实现文本和password输入界面
- Android开发之关于transformDexArchiveWithExternalLibsDexMergerForDebug java.lang.OutOfMemoryError问题的参考解决方案
- POJ 3468 A Simple Problem with Integers(线段树:区间更新)
- 如何开启并配置CITRIX Xenserver的SNMP服务
- 哈老师一到的飞鸽传书
- 为什么我爱Xonsh
- Flume案例Ganglia监控
- SQL Server中并行执行计划的基础
- Java Scanner 类,获取用户输入的值
- 【语音增强】基于matlab匹配滤波器语音识别【含Matlab源码 514期】
- 简单的数据库group by后要进行某字段拼接
- 利用SPSS随机数轻松实现随机分组
- 利用python更改图片格式和分辨率
- Flowable 快速入门教程:通过 Comment 保存审核信息
- bzoj2563阿狸和桃子的游戏
- 通信总线传输速率计算
- linux中如何看文件换行符,linux下的换行符
- 初见TIC66XX系列DSP——C6678
- 服务器和应用系统迁移方案