题目链接:http://codeforces.com/contest/766/problem/C

题意:给你一个长度为n的字符串,这个字符串只包含小写字母,然后让你把这个字符串进行分割,形成若干个小的字符串,

每个小写字母都有一个数字ma[i],表示这个字母能够存在于长度不超过ma[i]的字符串内, 在这个条件下分割问最多有几

种分割方法,最长分割串为多少,最小分割为几部分。

一道简单的dp,很明显要设dp[i]表示到i位一共有几种分割方法然后递推,注意更新过程中要满足所有子串。然后再设f[i]

表示到前i位最小分割为几部分,然后差不多。

大致转移如下。

for(int i = 1 ; i <= n ; i++) {

for(int j = 1 ; j <= i ; j++) {//递推

int l = i - j + 1 , r = i;

int flag = 0;

for(int k = l ; k <= r ; k++) {//使得范围内所有子串满足条件后再修改

int len = r - l + 1;

if(el[s[k] - 'a'] < len) {

flag = 1;

break;

}

}

if(!flag) {

dp[i] = (dp[i] + dp[i - j]) % mod;

MINF[i] = min(MINF[i] , MINF[i - j] + 1);

MAX = max(MAX , j);

}

}

}

#include <iostream>
#include <cstring>
#define inf 0X3f3f3f3f
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
char s[1010];
int el[26] , MAX , MINF[1010];
ll dp[1010];
int main() {
int n;
cin >> n;
cin >> s + 1;
for(int i = 0 ; i < 26 ; i++) {
cin >> el[i];
}
memset(dp , 0 , sizeof(dp));
memset(MINF , inf , sizeof(MINF));
dp[0] = 1 , MAX = 1 , MINF[0] = 0;
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= i ; j++) {
int l = i - j + 1 , r = i;
int flag = 0;
for(int k = l ; k <= r ; k++) {
int len = r - l + 1;
if(el[s[k] - 'a'] < len) {
flag = 1;
break;
}
}
if(!flag) {
dp[i] = (dp[i] + dp[i - j]) % mod;
MINF[i] = min(MINF[i] , MINF[i - j] + 1);
MAX = max(MAX , j);
}
}
}
cout << dp[n] << endl;
cout << MAX << endl;
cout << MINF[n] << endl;
return 0;
}

codeforces 766 C. Mahmoud and a Message(简单dp)的更多相关文章

  1. Codeforces 766C:Mahmoud and a Message(DP)

    题目链接:http://codeforces.com/problemset/problem/766/C 题意 有一个长度为n的字符串,第二行有26个数字,位置1~26对应为a~z的字母,数值表示该字母 ...

  2. 【codeforces 766C】Mahmoud and a Message

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  3. Codeforces Round #260 (Div. 1) A. Boredom (简单dp)

    题目链接:http://codeforces.com/problemset/problem/455/A 给你n个数,要是其中取一个大小为x的数,那x+1和x-1都不能取了,问你最后取完最大的和是多少. ...

  4. codeforces Gym 100500H A. Potion of Immortality 简单DP

    Problem H. ICPC QuestTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/a ...

  5. codeforces 766 D. Mahmoud and a Dictionary(种类并查集+stl)

    题目链接:http://codeforces.com/contest/766/problem/D 题意:给你n个单词,m个关系(两个单词是反义词还是同义词),然后问你所给的关系里面有没有错的,最后再给 ...

  6. codeforces#766 D. Mahmoud and a Dictionary (并查集)

    题意:给出n个单词,m条关系,q个询问,每个对应关系有,a和b是同义词,a和b是反义词,如果对应关系无法成立就输出no,并且忽视这个关系,如果可以成立则加入这个约束,并且输出yes.每次询问两个单词的 ...

  7. codeforces 687C - The Values You Can Make 简单dp

    题意:一个数组a[i],你可以挑出若干个数(只能挑一次)加起来等于k, 针对每一种方案,你可以选出这若干个数的子集来组合新数 最后所有的方案能组合出多少种数 分析:一看数据范围n,k<=500 ...

  8. Codeforces Round #396 (Div. 2) C. Mahmoud and a Message dp

    C. Mahmoud and a Message 题目连接: http://codeforces.com/contest/766/problem/C Description Mahmoud wrote ...

  9. Codeforces Round #396 (Div. 2) C. Mahmoud and a Message

    地址:http://codeforces.com/contest/766/problem/C 题目: C. Mahmoud and a Message time limit per test 2 se ...

随机推荐

  1. hdoj 1753 (Java)

    刚刚开始用Java,代码难免不够简洁. import java.math.BigDecimal; import java.util.Scanner; public class Main { publi ...

  2. 基于Spring注解的上下文初始化过程源码解析(一)

    最近工作之余有时间和精力,加上平时对源码比较感兴趣,就开始啃起了Spring源码.为加深印象写了这篇博客,如有错误,望各位大佬不吝指正. 我看的是Spring5的源码,从同性社区download下来后 ...

  3. luogu1330_封锁阳光大学 图的遍历

    传送门 解释:(转自洛谷题解) 首先,肯定要明确一点,那就是这个图是不一定联通的.于是,我们就可以将整张图切分成许多分开的连同子图来处理.然而最重要的事情是:如何处理一个连通图? 乍看下去,似乎无从下 ...

  4. Vue系列:为不同页面设置body背景颜色

    由于SPA页面的特性,传统的设置 body 背景色的方法并不通用. 解决方案:利用组件内的路由实现 代码参考如下

  5. [实践]redhat linux5.3安装tomcat

    1.安装准备 操作系统:RedHat 5 (自带apache2.2.3) 安装tomcat前首先要安装jdk: 查看系统是否安装了jdk或tomcat的命令: rpm -qa | grep java ...

  6. 三层架构(MVC)实现简单登陆注册验证(含验证码)

    前言在我的上一篇微博里我已经提出了登陆的方法,当时我采取的是纯servlet方式,因为当时刚接触到servlet,正好网上没有这方面的全面讲解,所以我就发飙了.不过在现实生产中我们大多采用的三层架构. ...

  7. 运行MonkeyRunner时使用Genymotion模拟器

    Android自带的模拟器实在太慢太卡,远没有Genymotion的顺畅,所以找了一个办法,在启动py文件时使用Genymotion的模拟器 1.Genymotion安装完成之后,在Settings- ...

  8. 逆向破解之160个CrackMe —— 017

    CrackMe —— 017 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  9. JS基础-该如何理解原型、原型链?

    JS的原型.原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对 ...

  10. .net测试篇之Moq行为配置

    系列目录 我们前面说过.Moq在创建模拟对象的时候,简单对象赋值默认值,引用对象赋值为null,但是有些时候接口里面还包含另一个接口对象,我们知道Moq是可以模拟一个接口对象的,我们可以通过配置让Mo ...