UVa 12585 Poker End Games

题意:Alice和Bob这对狗男女又开始玩游戏了!!!!一开始前者有a元,后者有b元,每次玩,每个人赢得概率是对半开的,令c为a,b中的最小值,那么每次玩,谁输了就给赢的人c元,问Alice赢的概率和游戏的盘数期望值!

思路:貌似会迭代!公式也不好推。。。发现概率是0.5  然后误差范围是1e-5, 那么只要到达一定深度以后概率就可以忽略不计了!

    #include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
using namespace std;
typedef long long LL;
#define REP(_,a,b) for(int _ = (a); _ <= (b); _++)
int a,b;
int gcd(int a,int b) {
    if(!b) return a;
    else return gcd(b,a%b);
}
double dfs(int x,int y,int dep) {
    if(dep > 30 || x==0) return 0.0;
    if(y==0) return 1;
    if(x > y) {
        return dfs(x-y,y*2,dep+1)/2+dfs(x+y,0,dep+1)/2;
    }else{
        return dfs(0,y+x,dep)/2+dfs(x+x,y-x,dep+1)/2;
    }
}
double dfs1(int x,int y,int dep) {
    if(dep > 30) return 1;
    if(x==0) return 0;
    if(y==0) return 0;
    if(x > y) {
        return 1+dfs1(x-y,y*2,dep+1)/2;
    }else{
        return 1+dfs1(x*2,y-x,dep+1)/2;
    }
}
int main(){
    int ncase,T=1;
    cin >> ncase;
    while(ncase--) {
        scanf("%d%d",&a,&b);
        if(a==b) {
            printf("Case %d: 1.000000 0.500000\n",T++);
        }else{
            int g = gcd(a,b);
            int t1 = a/g;
            int t2 = b/g;
            double p = dfs(t1,t2,0);
            double e = dfs1(t1,t2,1);
            printf("Case %d: %.6lf %.6lf\n",T++,e,p);
        }
    }
    return 0;
}
时间: 2024-08-29 01:46:19

UVa 12585 Poker End Games的相关文章

Poker End Games

题目链接 题意: 初始为一个数对(a,b),每回合从a到b或者从b到a转移min(a,b),最后如果b为零,获胜 求能进行的回合数的期望和获胜的概率 For both these valueserrors less than 10e-5will be ignored 分析: 这个题目关键在于误差为1e-5比较大,所以其实不用高斯消元,直接DFS忽略环形.因为大约递归20层左右就可以结束了(此时近似为0),所以暴力DFS即可 可以不用高斯消元的原因: 1.误差要求不是很高 2.每个状态恰好转移到两

UVa 10315 - Poker Hands

题目:两个人手里各有五张牌,比较两牌型大小. 比较规则如下:(按优先级排序,优先级相同按下面内部规则比较) 1.straight-flush:同花顺,牌面连续,花色相同,按最大的值比较: 2.four-of-a-kind:四条,牌面有四个相同的值,按四个的牌面比较: 3.full-house:船牌,牌面有三个相同值,剩下两个也相同值,按三个的牌面比较: 4.flush:同花,五张牌的花色相同,不是顺子,按牌面最大的开始比,相同比较下一个: 5.straight:顺子,五张牌的值连续,按最大的值比

【uva 1610】Party Games(算法效率--构造 dfs)

题意:有一个N个字符串(N≤1000,N为偶数)的集合,要求找一个长度最短的字符串(可不在集合内)S,使得集合中恰好一半的串小于等于S,另一半大于S.如果有多解,要求输出字典序最小的解. 解法:本来我是想分析情况用if else实现的,但是细节很多,特别容易错.结果果然如此.╮(╯_╰)╭ 那么便看看搜索行不行,由于要求字典序最小,也就是长度尽量小的情况下字符尽量小.而且要集合中恰好一半的串小于等于S,另一半大于S,也就是排序后>=中间靠左边的串且<中间靠右边的串.那么我们可以对排序后的中间的

ACM-ICPC Dhaka Regional 2012 题解

B: Uva: 12582 - Wedding of Sultan 给定一个字符串(仅由大写字母构成)一个字母表示一个地点,经过这个点或离开这个点都输出这个地点的字母) 问: 每个地点经过的次数(维护一个栈就可以了,注意进入起点和离开起点都不算入起点的次数) #include<cstdio> #include<cstring> #include<stack> #include<iostream> #include<algorithm> using

编程题目分类(剪辑)

1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代数 13. 组合问题 14. 数论 15. 网格,几何,计算几何 [编程入门] PC 110101, uva 100, The 3n+1 problem, 难度 1 PC 110102, uva 10189, Minesweeper, 难度 1 PC 110103, uva 10137, The T

App Store 审核指南最新中英文参照版

1.1 As a developer of Apps for the App Store you are bound by the terms of theProgram License Agreement (PLA), Human Interface Guidelines (HIG), and any other licenses or contracts between you and Apple. The following rules and examples are intended

iOS发布条款检查表

序号 分类 条款编号 条款 案例 1 功能 2.1 崩溃的程序将会被拒绝 2 2.2 有错误的程序将会被拒绝 点击版本升级无反应/点击版本升级,在线版本和当前版本都是2.0.3 3 2.3 跟开发者宣传不符的程序将会被拒绝 4 2.4 无应用文档或隐藏功能与描述不符的程序将会被拒绝 5 2.5 使用非公开API的程序将会被拒绝 6 2.6 在指定容器范围外读写数据的程序将会被拒绝 7 2.7 以任何方式或形式下载代码的程序将会被拒绝 8 2.8 安装或释放其他可执行代码的程序将会被拒绝 9 2.

iOS开发 - iOS发布条款检查表

序号 分类 条款编号 条款 案例 1 功能 2.1 崩溃的程序将会被拒绝 2 2.2 有错误的程序将会被拒绝 点击版本升级无反应/点击版本升级,在线版本和当前版本都是2.0.3 3 2.3 跟开发者宣传不符的程序将会被拒绝 4 2.4 无应用文档或隐藏功能与描述不符的程序将会被拒绝 5 2.5 使用非公开API的程序将会被拒绝 6 2.6 在指定容器范围外读写数据的程序将会被拒绝 7 2.7 以任何方式或形式下载代码的程序将会被拒绝 8 2.8 安装或释放其他可执行代码的程序将会被拒绝 9 2.

2012 Dhaka

2012 Dhaka B - Wedding of Sultan 题目描述:给出一棵树的\(dfs\)序(只要经过就会记录),求每个点的度 solution 按\(dfs\)序的规则还原这棵树就好了. 时间复杂度:\(O(n)\) C - Memory Overflow solution 模拟 D - Laptop Chargers 题目描述:有\(n\)台电脑,每台电脑的电量,电容量,功耗都可能不同,现在有功率相同的充电器若干个,问最少需要多少个充电器,以及只给一定数量的充电器时,最早没电的电