GYM 100608G 记忆化搜索+概率 2014-2015 Winter Petrozavodsk Camp, Andrew Stankevich Contest 47 (ASC 47)
https://codeforces.com/gym/100608
题意:
两个人玩游戏,每个人有一个长为d的b进制数字,两个人轮流摇一个$[0,b-1]$的骰子,并将选出的数字填入自己的d个空位之中
最后数字大的人赢
有两种玩法,第一个是轮流玩,一个是第一个人玩d次之后,第二个人玩
两个人都非常聪明,求第一个人的最大胜率
$d,b<=10,(b+1)^d<=3000$
题解:
很有意思的是,他保证了$(b+1)^d<=3000$,也就是b+1进制数字不会超过3000的大小
我们考虑暴搜+剪枝
首先,可以把b进制变成b+1进制,也就是吧$[0,b-1]$的骰子变成$[1,b]$,这个不影响答案
然后快乐暴搜,
对于第一个人的回合,他摇到的所有数字,每一个数字去尝试填所有空位,取该数字的最大值,也就是对于每种数字取最佳决策
对于第二个人的回合,他摇到的所有数字,每一个数字去尝试填所有空位,取该数字的最小值,也就是对于每种数字取对手的最坏决策
题目里的两个玩法其实大同小异,买一送一,预处理好就行了
#include <bits/stdc++.h>
#define endl '\n'
#define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define rep(ii,a,b) for(int ii=a;ii<=b;++ii)
using namespace std;
const int maxn=5e3+7,maxm=2e6+10;
int n,m,k,casn;
double dp[maxn][maxn],ans1[20][20],ans2[20][20];
int vis[maxn][maxn];
double dfs(int a,int b,int time){
if(vis[a][b]==casn) return dp[a][b];
if(time==0) return 1.0*(a>b);
vis[a][b]=casn; dp[a][b]=0;
if((casn%2==1&&time%2==0)||(casn%2==0&&time>n)){
rep(i,1,m){
double win=0;int now=a,pw=i;
rep(j,1,n){
if(now%(m+1)==0) win=max(win,dfs(a+pw,b,time-1));
now/=(m+1),pw*=(m+1);
}
dp[a][b]+=win/m;
}
}else {
rep(i,1,m){
double lose=1;int now=b,pw=i;
rep(j,1,n){
if(now%(m+1)==0) lose=min(lose,dfs(a,b+pw,time-1));
now/=(m+1),pw*=(m+1);
}
dp[a][b]+=lose/m;
}
}
return dp[a][b];
}
int main() {
IO;
rep(i,1,10)rep(j,2,10)
if(pow(j+1,i)<=3000){
n=i,m=j,casn++;
ans1[i][j]=dfs(0,0,i*2);
casn++;
ans2[i][j]=dfs(0,0,i*2);
}
cout<<fixed<<setprecision(12);
while(cin>>n>>m,n|m) cout<<ans1[n][m]<<' '<<ans2[n][m]<<endl;
}
GYM 100608G 记忆化搜索+概率 2014-2015 Winter Petrozavodsk Camp, Andrew Stankevich Contest 47 (ASC 47)的更多相关文章
- 多校5 1001 HDU5781 ATM Mechine 记忆化搜索+概率
// 多校5 1001 HDU5781 ATM Mechine // http://acm.hdu.edu.cn/search.php?field=problem&key=2016+Multi ...
- BZOJ4832: [Lydsy1704月赛]抵制克苏恩 (记忆化搜索 + 概率DP)
题意:模拟克苏恩打奴隶战对对方英雄所造成的伤害 题解:因为昨(今)天才写过记忆化搜索 所以这个就是送经验了 1A还冲了个榜 但是我惊奇的发现我数组明明就比数据范围开小了啊??? #include &l ...
- BZOJ.2246.[SDOI2011]迷宫探险(DP 记忆化搜索 概率)
题目链接 求最大的存活概率,DP+记忆化. 用f[s][x][y][hp]表示在s状态,(x,y)点,血量为hp时的存活概率. s是个三进制数,记录每个陷阱无害/有害/未知. 转移时比较容易,主要是在 ...
- HDU 5001 概率DP || 记忆化搜索
2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP 測 ...
- Codeforces Gym 100231G Voracious Steve 记忆化搜索
Voracious Steve 题目连接: http://codeforces.com/gym/100231/attachments Description 有两个人在玩一个游戏 有一个盆子里面有n个 ...
- Topcoder SRM 656 (Div.1) 250 RandomPancakeStack - 概率+记忆化搜索
最近连续三次TC爆零了,,,我的心好痛. 不知怎么想的,这题把题意理解成,第一次选择j,第二次选择i后,只能从1~i-1.i+1~j找,其实还可以从j+1~n中找,只要没有被选中过就行... [题意] ...
- Codeforces Gym 191033 E. Explosion Exploit (记忆化搜索+状压)
E. Explosion Exploit time limit per test 2.0 s memory limit per test 256 MB input standard input out ...
- 【NOI2005】聪聪和可可 概率与期望 记忆化搜索
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1635 Solved: 958[Submit][Statu ...
- Codeforces 148D Bag of mice:概率dp 记忆化搜索
题目链接:http://codeforces.com/problemset/problem/148/D 题意: 一个袋子中有w只白老鼠,b只黑老鼠. 公主和龙轮流从袋子里随机抓一只老鼠出来,不放回,公 ...
随机推荐
- [Alpha阶段]测试报告
[Alpha]阶段测试报告 在测试过程中发现的BUG 在最后的测试阶段中,我们不可避免的遇到了各种各样的BUG.虽然大多数都不是严重的BUG,但是这些细枝末节的问题的堆积,依然会很大程度上降低用户 ...
- CSS如何把一张横向的长图变成竖向的?
前言: 有时候做项目过程中,设计的是一张横向的长图,但是我们需要在手机端观看的时候,也想把手机横着观看,这样视野更宽阔,如何解决这个问题呢? html <div class="imgB ...
- git添加秘钥提示Key is already in use
种种原因,需要修改git账号的秘钥. 操作如下: 1.删除系统上.ssh下的known_hosts文件 (一般在这个路径下C:\Users\Administrator\.ssh)如果账号不是Admi ...
- MR-join连接
package com.bw.mr; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...
- 用eclipce编写 MR程序 MapReduce
package com.bw.mr; import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.a ...
- EntityFrameworkCore中的OnModelCreating
在我们使用EntityFrameworkCore作为数据库ORM框架的时候,不可避免的要重载DbContext中的一个虚方法OnModelCreating,那么这个方法到底是做什么的?到底有哪些作用呢 ...
- 调用webservice帮助类
using System;using System.CodeDom;using System.CodeDom.Compiler;using System.Collections.Generic;usi ...
- Java内存溢出和内存泄露后怎么解决
1.首先这里先说一下内存溢出和内存泄露的区别: 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory:比如申请了一个integer,但 ...
- PWA 渐进式Web应用程序 - 解释
想象一下,如果一个网站上所有的功能都能够作为一个移动应用程序为用户所用——任何设备上都可以使用.可接收所有的通知.离线模式可用,为了实现这个愿景,2015年,谷歌创造了渐进式Web应用程序(PWA). ...
- awk 计算某一列的和
awk 计算某一列的和 我需要通过nova list 显示所有虚拟机的cpu总和,即用awk计算某一列的综合 [root@control01 ~]# nla | awk -F '|' 'BEGIN{s ...