【递推】【概率】Gym - 100814A - Arcade Game
题意:给你一个不超过九位的不含重复数码的十进制数,每次会随机将它的数码打乱,变成一个新的数,如果它小于等于上一次的数,那么你输了;如果它大于上一次的数,那么可以继续。直到它变成能够表达的最大数为止就赢了,问你赢的概率。
设所有排列从小到大被标记为1~n。p(i)表示排列i获胜的概率。
p(n)=1;p(n-1)=1/n;p(n-2)=1/n * (1+1/n);...;p(i)=1/n * (p(n)+p(n-1)+...+p(i+1))。
递推一下就行了。
注意特判如果它已经是最大的了,输出零。
#include<algorithm>
#include<cstdio>
#include<vector>
using namespace std;
struct data{
int v,p;
}t[15];
bool cmp(const data &a,const data &b){
return a.v<b.v;
}
vector<int> vs[15];
int T,a[15],wei,n,b[15];
double p[400000],pre[400000];
int main(){
for(int i=1;i<=9;++i){
for(int j=1;j<=i;++j){
b[j]=j;
}
do{
int x=0;
for(int j=1;j<=i;++j){
x=x*10+b[j];
}
vs[i].push_back(x);
}while(next_permutation(b+1,b+i+1));
}
//freopen("a.in","r",stdin);
scanf("%d",&T);
for(;T;--T){
wei=0;
scanf("%d",&n);
int tmp=n;
while(tmp){
t[++wei].v=tmp%10;
t[wei].p=wei;
tmp/=10;
}
sort(t+1,t+wei+1,cmp);
for(int i=1;i<=wei;++i){
a[t[i].p]=i;
}
int nn=0;
for(int i=wei;i>=1;--i){
nn=nn*10+a[i];
}
int jc=1;
for(int i=1;i<=wei;++i){
jc=jc*i;
}
int ci=jc-(lower_bound(vs[wei].begin(),vs[wei].end(),nn)-vs[wei].begin()+1),cnt=0;
p[0]=pre[0]=1.0;
for(int i=1;i<=ci;++i){
p[i]=pre[i-1]/(double)jc;
pre[i]=pre[i-1]+p[i];
}
printf("%.9f\n",ci ? p[ci] : 0.0);
}
return 0;
}
【递推】【概率】Gym - 100814A - Arcade Game的更多相关文章
- UVA 11021 Tribles(递推+概率)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33059 [思路] 递推+概率. 设f[i]表示一只Tribble经 ...
- 洛谷4316 绿豆蛙的归宿(DAG递推/概率dp)
题目大意: 给定一个DAG,求起点到终点的路径长度期望 根据题意可以知道每一条边都有一定概率被走到 那么\(\displaystyle\begin{aligned} Ans = \sum_{e \in ...
- UVA - 11021 - Tribles 递推概率
GRAVITATION, n.“The tendency of all bodies to approach one another with a strengthproportion to the ...
- LOJ#3093. 「BJOI2019」光线(递推+概率期望)
题面 传送门 题解 把\(a_i\)和\(b_i\)都变成小数的形式,记\(f_i\)表示\(1\)单位的光打到第\(i\)个玻璃上,能从第\(n\)个玻璃下面出来的光有多少,记\(g_i\)表示能从 ...
- 【LIS】【递推】Gym - 101246H - ``North-East''
x坐标排序,y坐标当权值,同一个x坐标的,y从大到小排. 求f(i)表示以i结尾的LIS以后,从后向前枚举,不断更新一个max数组,max(i)代表最长上升子序列为i时,当前的 结尾的最大值是多少. ...
- Codeforces Gym10081 A.Arcade Game-康托展开、全排列、组合数变成递推的思想
最近做到好多概率,组合数,全排列的题目,本咸鱼不会啊,我概率论都挂科了... 这个题学到了一个康托展开,有点用,瞎写一下... 康托展开: 适用对象:没有重复元素的全排列. 把一个整数X展开成如下形式 ...
- UVa 557 (概率 递推) Burger
题意: 有两种汉堡给2n个孩子吃,每个孩子在吃之前要抛硬币决定吃哪一种汉堡.如果只剩一种汉堡,就不用抛硬币了. 求最后两个孩子吃到同一种汉堡的概率. 分析: 可以从反面思考,求最后两个孩子吃到不同汉堡 ...
- UVA 557 - Burger(概率 递推)
Burger When Mr. and Mrs. Clinton's twin sons Ben and Bill had their tenth birthday, the party was ...
- 【BZOJ4944】【NOI2017】泳池 概率DP 常系数线性递推 特征多项式 多项式取模
题目大意 有一个\(1001\times n\)的的网格,每个格子有\(q\)的概率是安全的,\(1-q\)的概率是危险的. 定义一个矩形是合法的当且仅当: 这个矩形中每个格子都是安全的 必须紧贴网格 ...
随机推荐
- 引用类型 ( 对象定义 )——Array 类型
本文地址:http://www.cnblogs.com/veinyin/p/7607293.html 一个数组中可以存储不同类型的值,可以混合存储数字.字符串.对象等 1 创建数组 1.1 构造函数 ...
- PHP非常好用的分页类
分页类: <?php /* * ********************************************* * @类名: page * @参数: $myde_total - 总记 ...
- SVM问题再理解与分析——我的角度
SVM问题再理解与分析--我的角度 欢迎关注我的博客:http://www.cnblogs.com/xujianqing/ 支持向量机问题 问题先按照几何间隔最大化的原则引出他的问题为 上面的约束条件 ...
- NuGet Package Explorer上传时报:failed to process request:'Method Not Allowed'错误解决办法
相关日志:PUT /api/v2/package - 1000 - NuGet+Package+Explorer/3.15.0.0+(Microsoft+Windows+NT+6.2.9200.0) ...
- sed的额外用法(网摘)
#在我开始动手写一个一个的脚本的时候才会看到更多的用法 1. 在某行的前一行或后一行添加内容(前提是要确定行的内容) # 匹配行前加 sed -i '/allow/ideny' httpd.conf ...
- C# 随笔 【ToList().Foreach()和Foreach()】
1. 最近在做一个Socket通讯的例子,但是如果使用UTF-8编码传输中文的话取和的会不一样.早上做了测试 . string str = "a我..";看代码中间是一个英文,一个 ...
- POJ 2337 Catenyms(欧拉回(通)路:路径输出+最小字典序)
题目链接:http://poj.org/problem?id=2337 题目大意:给你n个字符串,只有字符串首和尾相同才能连接起来.请你以最小字典序输出连接好的单词. 解题思路:跟POJ1386一个意 ...
- python selenium自动化测试之路(1)--分层测试概念、selenium工具介绍
1.分层自动化测试概念 传统的自动化市场更关注产品UI层的自动化测试,而分层的自动化测试倡导产品开发的不同阶段都需要自动化测试 大多公司与研发团队其实是忽略了单元测试与集成测试阶段的自动化测试工作,所 ...
- [MySQL]You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
执行update语句,出现问题: 问题描述: You are using safe update mode and you tried to update a table without a WHER ...
- mysql 导入数据到postgresql
创建PG的表脚本 DROP TABLE IF EXISTS "public"."t_resource_info"; CREATE TABLE "pub ...