ZOJ 3605 Find the Marble
题意:Alice和Bob在玩一个游戏,该游戏需要n个杯子和一个石头,开始时石头被罩在在某个杯子里,Alice可交换任意两个杯子,经过一系列的交换,由Bob猜石头在哪个杯子里,交换总共m步,但Bob只看到了其中的k步,问Bob猜哪个杯子的可能性最大。
第一感觉就是和组合(在n个数里取m个有多少种)很相似,再看题目因为顺序是一定的,即选了k步之后,顺序只有一种。
c[n][m]=c[n-1][m-1]+c[n-1][m];
具体编码的时候只考虑到交换的两个杯子而忘记其他杯子在选择时的值也要加上c[n-1][m-1];
#include<cstdio> #include<cstring> #define MAXN 55 using namespace std;long long dp[MAXN][MAXN][MAXN];int main() {int T,n,m,s,k,i,j,t,a[MAXN],b[MAXN];scanf("%d",&T);while(T--){scanf("%d%d%d%d",&n,&m,&k,&s);for(i=1;i<=m;i++)scanf("%d%d",a+i,b+i);memset(dp,0,sizeof(dp));dp[0][0][s]=1;for(i=1;i<=m;i++){dp[i][0][s]=1;for(j=1;j<=i&&j<=k;j++){dp[i][j][b[i]]=dp[i-1][j-1][a[i]];dp[i][j][a[i]]=dp[i-1][j-1][b[i]];for(t=1;t<=n;t++){dp[i][j][t]+=dp[i-1][j][t];if(t!=a[i]&&t!=b[i])//最开始忘记考虑的一种情况dp[i][j][t]+=dp[i-1][j-1][t];}}}/*for(i=1;i<=m;i++,putchar('\n'))for(j=0;j<=k;j++,putchar('\n'))for(t=1;t<=n;t++)printf("%d ",dp[i][j][t]);printf("\n");*/for(s=1,t=2;t<=n;t++)if(dp[m][k][t]>dp[m][k][s])s=t;printf("%d\n",s);}return 0; }
转载于:https://www.cnblogs.com/xchaos/archive/2012/04/25/2470150.html
ZOJ 3605 Find the Marble相关推荐
- c语言 版本号,C语言版本学生信息管理系统
仍然有一些小bug,后续会发布OC完善版的图书馆管理系统,欢迎批评指正. #include void menu_choose(); typedef struct { int Id; int age; ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!
两题水题: 1.如果一个数能被分解为两个素数的乘积,则称为Semi-Prime,给你一个数,让你判断是不是Semi-Prime数. 2.定义F(0) = 7, F(1) = 11, F(n) = F( ...
- zoj 1204 Additive equations
ACCEPT acm作业 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=204 因为老师是在集合那里要我们做这道题.所以我很是天 ...
- 【HDU/POJ/ZOJ】Calling Extraterrestrial Intelligence Again (素数打表模板)
http://poj.org/problem?id=1411 POJ http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=168 ...
- 模拟 ZOJ 3878 Convert QWERTY to Dvorak
题目传送门 1 /* 2 模拟:手敲map一一映射,累! 3 除了忘记读入字符串不能用gets用getline外还是很顺利的AC了:) 4 */ 5 #include <cstdio> 6 ...
- 矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence
题目传送门 1 /* 2 题意:加上适当的括号,改变计算顺序使得总的计算次数最少 3 矩阵连乘积问题,DP解决:状态转移方程: 4 dp[i][j] = min (dp[i][k] + dp[k+1] ...
- ZOJ 3597 Hit the Target! (线段树扫描线 -- 矩形所能覆盖的最多的点数)
ZOJ 3597 题意是说有n把枪,有m个靶子,每把枪只有一发子弹(也就是说一把枪最多只能打一个靶子), 告诉你第 i 把枪可以打到第j个靶, 现在等概率的出现一个连续的P把枪,在知道这P把枪之后,你 ...
- 九度OJ—题目1032:ZOJ
题目描写叙述: 读入一个字符串.字符串中包括ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出.当某个字符用完时,剩下的仍然依照ZOJ的顺序输出. 输入: 题目包括多组用例,每组用例占一行,包括ZOJ ...
最新文章
- 最新剑桥《AI全景报告》出炉:中国发表机器学习学术研究超过美国
- python环境配置是什么意思_python环境搭建
- C语言日志级别和作用,自己写的C语言通用日志框架,可以控制日志输出等级
- Quartz-DateBuilder解读
- ubuntu18.04安装nextcloud以及相关配置
- C语言六边形蜂巢数组,android 六边形蜂巢布局控件
- .NET生态系统概览
- windows下检測文件改变
- bash: ssh: command not found解决方法
- hover 插入html元素,解决hover生成border造成的元素移动方法
- springboot项目打jar包部署到linux中
- 在python中不论类的名字是什么构造方法的名字_2020年超星尔雅最新穿T恤听古典音乐答案搜题公众号...
- 电子或计算机机类学校,热门理工科工程专业当然属于计算机、电子信息和机械...
- 克服J2SE 1.3-1.4 的不兼容性
- 初级系列11.个人所得税问题
- 什么公司邮箱邮件系统安全,安全邮箱格式怎么写?
- 如何学习编程、一门编程语言怎么算入门、快速掌握一门编程语言
- 【今日CV 计算机视觉论文速览 第101期】Wed, 17 Apr 2019
- 看片会员php源码,会员碎片 · THINKPHP插件 · 看云
- 游戏服务器为什么选用Actor模型,《百万在线》给你答案