博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zoj 3605
阅读量:5234 次
发布时间:2019-06-14

本文共 1195 字,大约阅读时间需要 3 分钟。

链接

[]

题意

就是有n碗,有一个宝石,知道开始宝石在那个碗下面

进行M次交换,但知道其中的k次,问你最可能在那个碗

分析

概率dp

状态定义;dp[i][j][r];
当前进行i次知道其中j次宝石在第r碗的方案数
最后就是就是进行m知道K次的方案数最多的那个碗
状态转移:
具体看代码吧

代码

#include
using namespace std;#define ll long longll dp[60][60][60];int t,n,m,k,s;int main(){ scanf("%d",&t); while(t--){ memset(dp,0,sizeof(dp)); scanf("%d%d%d%d",&n,&m,&k,&s); dp[0][0][s]=1; int x,y; for(int i=1;i<=m;i++){//当前操作次数 scanf("%d%d",&x,&y); for(int j=1;j<=n;j++){//当前位置 for(int r=0;r<=k;r++)//知道的次数 { if(r!=0){ if(x==j) dp[i][r][j]+=dp[i-1][r-1][y]; else if(y==j) dp[i][r][j]+=dp[i-1][r-1][x]; else dp[i][r][j]+=dp[i-1][r-1][j]; } dp[i][r][j]+=dp[i-1][r][j]; } } } int flag; ll ma=-1; for(int i=1;i<=n;i++) if(dp[m][k][i]>ma){ ma=dp[m][k][i]; flag=i; } printf("%d\n",flag); } return 0;}

转载于:https://www.cnblogs.com/mch5201314/p/10695899.html

你可能感兴趣的文章
设计模式C#合集--工厂方法模式
查看>>
IDEA中Git之项目场景
查看>>
java
查看>>
题目1104:整除问题
查看>>
Facebook----扎克伯格
查看>>
mac下破解apk文件以及apktool的相关使用
查看>>
优化网站设计(二十六):设计“智能”的事件处理程序
查看>>
性能测试总结(一)---基础理论篇
查看>>
前端程序员容易忽视的一些基础知识
查看>>
ISO日期格式标准,浏览器到服务器到mysql中的时区
查看>>
python 函数、装饰器、迭代器、生成器、列表生成式
查看>>
捕获JSON 解析错误
查看>>
java-类和重载笔记
查看>>
java中Date,SimpleDateFormat
查看>>
Swift学习Day005
查看>>
第九章笔记
查看>>
12558 - Egyptian Fractions (HARD version) (IDA* + 剪枝)
查看>>
Wireshark 文件分割和合并
查看>>
结对编程项目-四则运算 挑战出题
查看>>
数组是什么
查看>>