ZOJ 3791 An easy game DP+组合数
给定两个01序列,每次操作可以任意改变其中的m个数字 0变 1 1 变 0,正好要变化k次,问有多少种变法
dp模型为dp[i][j],表示进行到第i次变化,A,B序列有j个不同的 变法总和。
循环k次,每次针对m,向那j个不同 分1-j个即可,不过要用到组合数,因为对每个数操作不同都不一样
最后结果就是 dp[k][0]
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL long long
using namespace std;
LL dp[][];
LL c[][];
int n,m,k,len;
char s1[],s2[];
const LL M=+;
void init()
{
c[][]=;
for (int i=;i<;i++){
c[i][]=;
for (int j=;j<=i;j++){
c[i][j]=c[i-][j-]+c[i-][j];
c[i][j]%=M;
}
}
}
int main()
{
init();
while (scanf("%d%d%d",&n,&k,&m)!=EOF)
{
scanf("%s%s",s1,s2);
int a=;
for (int i=;i<n;i++){
if (s1[i]!=s2[i]){
a++;
}
}
memset(dp,,sizeof dp);
dp[][a]=;
for (int i=;i<k;i++){
for (int j=;j<=n;j++){
if (dp[i][j]){
for (int q=;q<=min(m,j);q++){
int sta=j+m-*q;
dp[i+][sta]+=c[j][q]*c[n-j][m-q]%M*dp[i][j]%M;
if (dp[i+][sta]>=M) dp[i+][sta]%=M;
}
}
}
}
printf("%lld\n",dp[k][]);
}
return ;
}
ZOJ 3791 An easy game DP+组合数的更多相关文章
- zoj 3791 An Easy Game dp
An Easy Game Time Limit: 2 Seconds Memory Limit: 65536 KB One day, Edward and Flandre play a ga ...
- ZOJ 3791 An Easy Game(DP)
题目链接 题意 : 给你两个长度为N的字符串,将第一个字符串每次只能变化M个,问变换K次之后变成第二个字符串一共有几种方法. 思路 : DP.dp[i][j]表示变了 i 次之后有j个不一样的字母的方 ...
- ZOJ 3791 An Easy Game
思路:dp+记忆化搜索,设dp[n][m]表示s1与s2不同字符个数为n,还需要变m步的方法数,那么: dp[n][m] = (c[n][i]*c[N-n][K-i]) * dp[n-i+(K-i ...
- 2014 Super Training #8 C An Easy Game --DP
原题:ZOJ 3791 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3791 题意:给定两个0-1序列s1, s2,操作t ...
- HDU 4359——Easy Tree DP?——————【dp+组合计数】
Easy Tree DP? Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- noj 2033 一页书的书 [ dp + 组合数 ]
传送门 一页书的书 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte总提交 : 53 测试通过 : 1 ...
- 【区间dp+组合数+数学期望】Expression
https://www.bnuoj.com/v3/contest_show.php?cid=9148#problem/I [题意] 给定n个操作数和n-1个操作符,组成一个数学式子.每次可以选择两个相 ...
- HDU 4359 Easy Tree DP?
Easy Tree DP? Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- D. Easy Problem dp(有衔接关系的dp(类似于分类讨论) )
D. Easy Problem dp(有衔接关系的dp(类似于分类讨论) ) 题意 给出一个串 给出删除每一个字符的代价问使得串里面没有hard的子序列需要付出的最小代价(子序列不连续也行) 思路 要 ...
随机推荐
- windows服务使用和控制启停
https://www.cnblogs.com/mq0036/p/7875864.html
- 隐藏浏览器body的滚动条,并进行滚动
在使用html2canvas插件的时候,发现截图完成后右侧区域被覆盖了一点,后面才发现是滚动器占了位置 网上有些解决滚动条的方法,不过他们都是相对盒子的,而我这个是对body的 最终发现引用下面这个c ...
- 十九 Spring的JDBC模版使用: 模版的CRUD的操作
Spring的JDBC模版使用: 模版的CRUD的操作 保存操作 修改操作 删除操作 查询操作 import com.ithheima.jdbc.domian.Account; @RunWith(Sp ...
- Windows API 常用函数---转载
Windows API 常用函数 2014-10-15 14:21 xiashengwang 阅读(2105) 评论(0) 编辑 收藏 .Net中虽然类库很强的,但还是有些时候功能有限,掌握 ...
- java基础多线程
线程的创建 方式1:继承Java.lang.Thread类,并覆盖run() 方法 package com.demo.Thread; public class ThreadDemo01 extends ...
- No module named PIL
ImportError: No module named PIL 错误 的解决方法: 安装Pillow: pip install Pillow
- Spring事务原理分析-部分一
Spring事务原理分析-部分一 什么事务 事务:逻辑上的一组操作,组成这组操作的各个单元,要么全都成功,要么全都失败. 事务基本特性 ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要 ...
- Linux centosVMware 磁盘格式化、磁盘挂载、手动增加swap空间
一.磁盘格式化 磁盘分区后不能直接使用,需要对每一个分区格式化,格式化其实就是安装系统文件. 命令mke2fs:不支持格式化成xfs系统文件 mkfs.ext4 == mke2fs -t ext4 ...
- 5、mysql的连接查询
1.内联查询 >inner join 或 join 2.外联查询 (1)左连接 >left outer join 或 left join (2)右连接 >right outer jo ...
- 前端学习笔记系列一:3 Vue中的nextTick
一.示例 先来一个示例了解下关于Vue中的DOM更新以及nextTick的作用. 模板 <div class="app"> <div ref="msgD ...