题意

给出一个字符串 和每个字符的限制数量ai 让我们随意的切割成多个字符串 使得每一个字符串中的特定字符所在的子串长度len<=ai
求一共有多少个符合题目要求的方案 求其中最长的一个串长度是多少 求其中最少能分成多少个串
长度最大为1000

分析

明显可以用搜索 不过复杂度指数级 计数问题
考虑dp
对于第i个字符 他可以考虑从i-ai+1开始往后到i分割字符 我们这里可以枚举分割的位置
然后记录下来 那么对于第i个字符 我们知道他前面所有字符的分割数量 就可以更新第i个字符的分割方案 假设用dp[i]表示从1到第i个字符的可行分配方案 那么dp[i] +=dp[j]其中合法情况之和 就可以计数出所有情况的可能

code

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
const int mod = 1e9+7;
char a[1010];
int dp[1010],mmin[1010],mmax,res[26];
bool judge(int pos,int l){for(int i=pos-l+1;i<=pos;i++){if(res[a[i]-'a']<l)return 0;}return 1;
}
int main()
{int n;scanf("%d%s",&n,a+1);for(int i=0;i<26;i++)scanf("%d",&res[i]);dp[0]=1;for(int i=1;i<=n;i++){mmin[i] = mod;for(int j=1;j<=i;j++){if(judge(i,j)){//如果符合条件 就把方案数转移到更长的字符下dp[i] = (dp[i]+dp[i-j])%mod;mmin[i] = min(mmin[i],mmin[i-j]+1);//两个dp变量 都要更新 这里就是要把段数一并更新 mmax = max(mmax,j);}}}printf("%d\n%d\n%d\n",dp[n],mmax,mmin[n]);return 0;
}

CodeForces - 766C - Mahmoud and a Message dp相关推荐

  1. 766C - Mahmoud and a Message(dp)

    https://codeforces.com/problemset/problem/766/C 有一个长度为n的字符串,第二行有26个数字,位置1~26对应为a~z的字母,数值表示该字母不能出现在长度 ...

  2. codeforces 766 C Mahmoud and a Message

    题目链接:http://codeforces.com/contest/766/problem/C 题目: Mahmoud wrote a message s of length n. He wants ...

  3. Codeforces 148D. Bag of mice(概率dp)

    Codeforces 148D. Bag of mice(概率dp) Description The dragon and the princess are arguing about what to ...

  4. Codeforces 766E Mahmoud and a xor trip(树形DP)

    题目链接 Mahmoud and a xor trip 树形DP.先考虑每个点到他本身的距离和,再算所有点两两距离和. 做的时候考虑二进制拆位即可. #include <bits/stdc++. ...

  5. Codeforces 1276D/1259G Tree Elimination (树形DP)

    题目链接 http://codeforces.com/contest/1276/problem/D 题解 我什么DP都不会做,吃枣药丸-- 设\(f_{u,j}\)表示\(u\)子树内,\(j=0\) ...

  6. Codeforces 264B Good Sequences ★ (分解素因子+DP)

    题目链接:http://codeforces.com/problemset/problem/264/B 题目大意:给定一个数列a1,a2,a3,a4,--,an(数据保证ai严格递增,n<=10 ...

  7. Codeforces 118 D. Caesar's Legions (dp)

    题目链接:http://codeforces.com/contest/118/problem/D 有n个步兵和m个骑兵要排成一排,其中连续的步兵不能超过k1个,连续的骑兵不能超过k2个. dp[i][ ...

  8. CodeForces - 468C Hack it!(构造+数位dp)

    题目链接:点击查看 题目大意:求出一段区间 [l,r][l,r][l,r] 的数位和对 aaa 取模后为 000.更具体的,设 f(x)f(x)f(x) 为 xxx 的数位和,本题需要求出一对 [l, ...

  9. CodeForces - 1550E Stringforces(二分+状压dp)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的字符串,只包含前 kkk 个小写字母以及通配符 ???,现在可以将通配符替换成任意的前 kkk 个字母中的一个.设 f[i]f[i]f[i] 为 ...

最新文章

  1. 23Command(命令)模式
  2. css订单导航栏横线动画,小程序 纯css 实现tab导航栏下划线跟随动画
  3. 说说在MVC开发中,遇到的错误及解决方法(本文章是我在实际开发中总结出来的,希望对您有帮助)...
  4. 打开新窗口的js代码
  5. Boost::context模块fiber的stack测试程序
  6. 58同城数据库架构最佳实践
  7. UDT协议实现分析——连接的建立
  8. import javax.servlet.ServletRequest 关于IDEA javax.servlet.http.HttpServletRequest 不存在 解决方案
  9. 字符大小端aix linux,long, unsigned long不是跨平台的(慎用)
  10. C#常用单元测试框架比较:XUnit、NUnit和Visual Studio(MSTest)
  11. php 类分开写,自己前几天写的无限分类类_PHP教程
  12. thinkphp5常用函数汇总_thinkphp 5 常用的助手函数
  13. 微软职位内部推荐-Software Engineer II-Senior Software Engineer for Satori
  14. html字体版权,字体在网站中的版权问题
  15. 扎克伯格让员工学会高效工作的26张PPT
  16. 微信接入之获取用户头像
  17. BZOJ5294 BJOI2018 二进制 线段树
  18. 关于数字证书链的一点认知
  19. 09组团队项目-Alpha冲刺-3/6
  20. 怎么样把pdf压缩到最小

热门文章

  1. Web前端行业的了解
  2. poj 1161 最短路构图
  3. 知识管理系统Data Solution研发日记之十二 网页数据抓取Fetch,呈现Render,导出Export...
  4. C# MVC的博客开发(三)注册
  5. saltstack部署java应用失败无日志——CICD 部署
  6. Android 支付宝登录
  7. 施乐700彩机服务器显示c4,施乐彩色数码复印机故障代码大全
  8. ie9 Flash内容无法显示
  9. servlet,springmvc,springboot转发时页面静态资源404问题
  10. vue-router 路由跳转