Problem Description
  Nias与Ains都特别喜欢玩骰子,而且都自以为比对方玩得更溜。
  终于有一天,他们决定用骰子来一决高下!
  一般的骰子玩法已经不足以体现他们的水平了,于是他们自创了一套玩法来PK:
首先,每人掷3个骰子;之后,可以选择其中一个骰子重新掷(当然也可以放弃这一步),最后,比较投掷结果的大小,结果大的那方获胜,一样的话为平局。
  大小比较规则为:
  三个一样数字的骰子称为三条;两个一样数字的骰子称为对子;只有一个数字的骰子成为散牌。三条>对子>散牌。当双方结果都为三条时,直接比较三条数字的大小;都有对子时,先比较对子数字的大小,若相同,再比较剩下的骰子的数字的大小;都只有散牌时,先比较最大的数字的大小,若相同,再比较次大的数字的大小,还相同,最后比较最小的数字的大小。

现在Nias已经投了3个骰子,还剩一次机会可以选择其中一个骰子重新投(或不选),而且他已经知道了Ains的最后投掷结果,求Nias获胜的概率有多大。

 
Input
输入数据第一行为一个整数T,表示有T组测试数据。
接下来T行,每行6个1~6的整数,前三个表示Nias第一次的投掷结果,后三个表示Aias最终的投掷结果。
 
Output
请输出Nias获胜的概率,结果保留3位小数,每组输出占一行。
 
Sample Input
4
2 3 5 3 3 4
3 3 1 2 2 2
6 2 1 5 4 3
1 2 3 4 4 1
 
Sample Output
0.333
0.167
1.000
0.000

暴力枚举一下

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; int x[],a[],b[];
int T;
int fz,fm;
double ans;
int flag;
int tot; void copy()
{
a[]=x[];
a[]=x[];
a[]=x[];
} int cheak()
{
sort(a+,a+);
sort(b+,b+); int lva,lvb; if(a[]==a[]&&a[]==a[]) lva=;
else if(a[]==a[]||a[]==a[]) lva=;
else lva=; if(b[]==b[]&&b[]==b[]) lvb=;
else if(b[]==b[]||b[]==b[]) lvb=;
else lvb=; if(lva>lvb) return ;
else if(lva<lvb) return ;
else if(lva==lvb)
{
if(lva==)
{
if(a[]>b[]) return ;
else return ;
} else if(lva==)
{
if(a[]>b[]) return ;
else if(a[]<b[]) return ;
else
{
int u1,u2;
if(a[]==a[]) u1=a[];
else u1=a[]; if(b[]==b[]) u2=b[];
else u2=b[]; if(u1>u2) return ;
else return ;
}
} else if(lva==)
{
if(a[]>b[]) return ;
else if(a[]<b[]) return ;
else
{
if(a[]>b[]) return ;
else if(a[]<b[]) return ;
else
{
if(a[]>b[]) return ;
else if(a[]<b[]) return ;
else return ;
}
}
return ;
}
}
} int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d %d%d%d",&x[],&x[],&x[],&b[],&b[],&b[]); copy();
flag=cheak();
fz=flag; if(fz) printf("1.000\n"); else if(fz==)
{
ans=;
fm=;
for(int i=;i<=;i++)
{
tot=;
for(int j=;j<=;j++)
{
copy();
a[i]=j;
flag=cheak();
tot=tot+flag;
}
if(tot==) continue;
ans=max(ans,1.0*tot/);
}
printf("%.3lf\n",ans);
}
}
return ;
}

2015 HDU 计算机学院 院赛 1003 玩骰子的更多相关文章

  1. hdu 计算机学院大学生程序设计竞赛(2015’11)

    搬砖 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submissi ...

  2. HDU计算机学院大学生程序设计竞赛(2015’12)Happy Value

    Problem Description In an apartment, there are N residents. The Internet Service Provider (ISP) want ...

  3. HDU计算机学院大学生程序设计竞赛(2015’12)The Magic Tower

    Problem Description Like most of the RPG (role play game), “The Magic Tower” is a game about how a w ...

  4. HDU计算机学院大学生程序设计竞赛(2015’12)The Country List

    Problem Description As the 2010 World Expo hosted by Shanghai is coming, CC is very honorable to be ...

  5. HDU 4750 Count The Pairs (2013南京网络赛1003题,并查集)

    Count The Pairs Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others ...

  6. java爬虫查找四川大学所有学院的网站的网址中的通知和新闻——以计算机学院为例

    需求:查找四川大学所有学院的网站的网址中的通知和新闻——以计算机学院为例 流程图 3. 具体步骤 (1) 学院的主页为:http://cs.scu.edu.cn/ 获取该页面的所有内容(本文只获取新闻 ...

  7. 2015 HDU 多校联赛 5363 Key Set

    2015 HDU 多校联赛 5363 Key Set 题目: http://acm.hdu.edu.cn/showproblem.php? pid=5363 依据前面给出的样例,得出求解公式 fn = ...

  8. 2015 HDU 多校联赛 5317 RGCDQ 筛法求解

    2015 HDU 多校联赛 5317 RGCDQ 筛法求解 题目  http://acm.hdu.edu.cn/showproblem.php? pid=5317 本题的数据量非常大,測试样例多.数据 ...

  9. HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&#39;s problem(manacher+二分/枚举)

    pid=5371">HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分同样,第一部分与第二部分对称. 如今给你一个长为n(n<10^5)的序 ...

随机推荐

  1. Java-多重if 结构

    import java.util.*;public class ifs { public static void main(String args[]){ Scanner in=new Scanner ...

  2. Uploadify自定义提示信息

    Uploadify是一款基于Jquery的上传插件,用起来很方便.但上传过程中的提示语言为英文,这里整理下如何修改英文为中文提示.方法1:直接修改uploadify.js中的提示信息,将英文提示改成对 ...

  3. DataSet与DataReader的比较

    DataSet与DataReader的比较 DataSet DataReader 读或写数据 只读 包含多个来自不同数据库的表 使用 SQL 语句从单个数据库 非连接模式 连接模式 绑定到多个控件 只 ...

  4. 二分 Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D

    http://codeforces.com/contest/722/problem/D 题目大意:给你一个没有重复元素的Y集合,再给你一个没有重复元素X集合,X集合有如下操作 ①挑选某个元素*2 ②某 ...

  5. asp之vbscript函数

    '函数Abs(number)'返回绝对值.Array(arglist)'创建一个数组.Asc(string)'返回字符串第一个字符的ANSI码.Atn(number)'返回反正弦值.CBool(exp ...

  6. Windows任务管理器中内存使用、虚拟内存区别及与页面文件的关系

    原文地址:Windows任务管理器中内存使用.虚拟内存区别及与页面文件的关系 虚拟内存(VirtualMemory)是Windows管理所有可用内存的方式.对于32位Windows系统,每个进程所用到 ...

  7. 解决oracle数据库连接不上的问题

    今天打开部署好的java开发的网站系统,反应好慢,第一反应就是后台有问题. 查看tomcat一堆的报错信息,重启还是存在. 使用plSql连接数据库看看,登录提示如下:ORA-12514:TNS:监听 ...

  8. 。net MVC 序列化 反序列化

           序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象 ...

  9. Java Interrupt Related

    In Java, the main process can have several threads at a time, but only a few of them can run concurr ...

  10. android上的JAVA8:使用retrolambda

    android上的JAVA8:使用retrolambda posted by juuda 2015年6月3日 下午7:33 under Android Java8引入了lambda表达式,让许多开发者 ...