题目链接
链接:https://ac.nowcoder.com/acm/contest/4853/C
来源:牛客网

题目描述
有一款自走棋有26种操作,每种操作我们都用a,b,c,d,…,x,y,z的符号来代替.
现在牛牛有一个长度为nn的操作序列,他现在可以从里面拿出某些操作来组合成一个操作视频, 比如说操作序列是abcdabcd,那么操作视频就有a,b,c,d,ab,ac,ad等(也就是操作序列的子序列).他现在想知道长度为kk且本质不同的操作视频有多少种.
比如对于abab,长度为2且本质不同的结果有ab,aa,ba,bb。
考虑到答案可能非常大,你只需要输出在模1e9+7意义下的答案就可以了.
输入描述:
第一行两个整数n,k.
第二行一个长度为n的字符串,保证只存在小写字母.
输出描述:
一行一个整数表示长度为k且本质不同的操作视频的个数.
示例1
输入

3 1
abc
输出
3
思路:定义dp【j】【x】表示子序列长度为j,最后一个字母为x的方案数。这里注意以下j的遍历要逆序,因为dp【j-1】【x】我们要的是上一个i的数据,如果正序的话dp【j-1】【x】求得就是当前i得数据。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
const int maxn=1e3+5;
ll dp[maxn][27];
char s[maxn];
int main()
{int n,k;scanf("%d %d",&n,&k);scanf("%s",s+1);if(k==0){puts("1");return 0;}for(int i=1;i<=n;++i){for(int j=k;j>=2;--j){if(i==n&&j==k-1) break;dp[j][s[i]-'a']=0;for(int x=0;x<26;++x)dp[j][s[i]-'a']=(dp[j][s[i]-'a']+dp[j-1][x])%mod;}dp[1][s[i]-'a']=1;}ll ans=0;for(int i=0;i<26;++i) ans+=dp[k][i],ans%=mod;printf("%lld\n",ans);
}

牛客练习赛60C 操作集锦(DP)相关推荐

  1. 牛客练习赛34 E little w and Digital Root(数位dp)

    title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...

  2. 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)

    牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

  3. 牛客练习赛75 D 减数游戏(队列优化(需要取模的)堆)

    牛客练习赛75 D 减数游戏 思路:写一下式子可以发每次选择最小的两个数进行操作,最后得到的答案会是最大的,那我们可以将它放进一个最小堆中来维护,但是里面的数是需要取模的,当它取模的时候,将会变小.那 ...

  4. 妄想集合(牛客练习赛90)

    妄想集合(牛客练习赛90) 题意: 开始有 n 个可重集合,开始时每一个集合中都有一个数,有 m 个操作. Quant l r x\text{Quant l r x}Quant l r x:往编号在 ...

  5. 踩不出足迹(牛客练习赛88 )

    踩不出足迹(牛客练习赛88 ) 题意: 长度为n的数组a,每个数是一个k位二进制 定义一下操作: 令第一次得到的结果为 a1a_1a1​.你需要从第二个数开始,每次可以选择与上一次得到的结果异或或者同 ...

  6. 牛客练习赛29 题解

    牛客练习赛29 A. 可持久化动态图上树状数组维护01背包 题解 这题跟标题没有任何关系- 贪心的使得负数删除的时候下标尽可能大,然后正数的时候下标尽可能小. 观察到每个数下标最大的时候就是它的初始下 ...

  7. 牛客练习赛63 C.牛牛的揠苗助长

    牛客练习赛63 C.牛牛的揠苗助长 题目链接 题目描述 牛牛有一块长度大小为n的菜园,他首先对这块菜园从1到n进行了编号,每一块地分别为1号.2号-n号菜地,然后他往每块菜地中都种下了一些水稻,一开始 ...

  8. 2021牛客练习赛90

    2021牛客练习赛90 B.寒冬信使 C.盾与战锤 B.寒冬信使 题目链接:https://ac.nowcoder.com/acm/contest/11180/B code: #include< ...

  9. 牛客练习赛54(A,B,C(ATCG相同的分在一起 暴力加巧妙差分))

    牛客练习赛54 日常刷一套牛客练习赛题 A-乘积 n这么小 暴力即可,不知道unsinged long long 操作,用java大数写了: import java.math.BigInteger; ...

最新文章

  1. 剑指Kubernetes 揭秘腾讯云的PaaS技术选型策略
  2. 型热电偶阻值温度对照表_如何选用温度传感器
  3. eclipse Android 开发基础 Activity 窗体 界面
  4. Android 一直往文件写数据_( 十 ) 小众但好用:通过 Google drive 备份与同步 Keepass 数据库...
  5. python多线程文件的数据续传_python实现支持并发、断点续传的Ftp程序
  6. java Clob转CLOB_Java获取Oracle中CLOB字段转换成String
  7. 【kafka】我用kafka两年踩过的一些非比寻常的坑
  8. python自动化办公要学多久-基于python实现自动化办公学习笔记
  9. 处理器仿存带宽_《CPU与内存的带宽搭配》
  10. 达梦数据库、表字段创建索引或删除索引,增加表字段、修改字段类型或长度、修改注释sql语句
  11. Apache 报错指定的网络名不再可用解决方案
  12. html表格中文字换行设置
  13. Python量化交易学习笔记(50)——程序化交易1
  14. winfrom给word加水印
  15. 暴雪即将公布《暗黑破坏神3》新职业
  16. 一张图读懂一个产业短视频第4期
  17. Python:快速去除PDF水印
  18. StringUtil工具类详解
  19. 图论——广度优先搜索
  20. 动画讲解直流无刷电机的原理

热门文章

  1. IJCAI 2022 | 用一行代码大幅提升零样本学习方法效果!南京理工牛津提出即插即用分类器模块...
  2. spss多因素方差分析
  3. cmd命令行使用pip install XXX库时,出现安装失败。
  4. Java生成png文件字体不清晰_将Graphics2D写入BufferedImage - 字体分辨率较差
  5. RK3588 调试 phy
  6. 实施MES系统已成为生产现场精细化管理的最佳方式
  7. tar命令打包压缩时排除.svn .git .repo等特定文件/文件夹报错/未生效
  8. 用pandas读写HDF5文件
  9. 南京大学计算机学院英才计划,强基计划|南京大学信息与计算科学专业:三院联合师资,本硕博衔接培养信息计算和AI人才...
  10. Halcon Qt 环境一次性配置