ACM-ICPC 2017 Asia Urumqi:A. Coins(DP)
挺不错的概率DP,看似基础,实则很考验扎实的功底
这题很明显是个DP,为什么???找规律或者算组合数这种概率,N不可能给的这么友善。。。
因为DP一般都要在支持N^2操作嘛。
稍微理解一下,这DP[i][j]还是不好想啊,首先是写DP[I][j]的含义
首先我们想这道题是要求一个最优决策下的期望,那么这个我们的最优决策是什么???
决策就是:我们假设我这一次需要翻转K个硬币,我们不愿翻那些已经在正面的,而去翻那些没有在正面的
而如果剩余的反面的不足,我再去翻转正面的
那么给dp[i][j]一个含义,代表我现在进行第i轮,已经翻转了j个正面了,并用一个K表示我当前这一轮有K个正面朝上,再写出转移方程
dp[i+1][j+k]=dp[i][j]*C(z,i)*pow(0.5,z);
C(z,k)*pow(0.5,z);就代表,这一次需要在Z个硬币中,翻转上来K个的概率
而如果出现剩余面不足,我翻转反面,相减就可以
注意POW会超时,写一个p[i]的数组,表示(1/2)^i就可以了
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
#include<math.h>
using namespace std;
double c[][];
double dp[][];
double p[];
int main()
{
int n,m,k;
int t,z;
scanf("%d",&t);
int tmp1,tmp2,tmp3;
c[][]=;
for (int i=;i<=; i++)
{
c[i][]=;
for (int j=;j<=i;j++)
{
c[i][j]=c[i-][j-]+c[i-][j];
}
}
p[]=;
for (int i=;i<=;i++){
p[i]=p[i-]*0.5;
}
while(t--)
{
scanf("%d%d%d",&n,&m,&z);
memset(dp,,sizeof(dp));
dp[][]=;
for (int i=; i<m; i++)//本轮
{
for (int j=; j<=n; j++)//已经有j面向下了
{
if(dp[i][j]==)continue;
for (int k=; k<=z; k++)//如果在这t枚中得到了k个向下的
{
if (j+z<=n)//全选面向下的
dp[i+][j+k]+=dp[i][j]*p[z]*c[z][k];
else //选完剩余的还要选已经向上的
dp[i+][k+n-z]+=dp[i][j]*p[z]*c[z][k];
}
}
}
double ans=;
for (int i=;i<=n;i++){
ans+=dp[m][i]*i;
}
printf("%.3lf\n",ans);
}
return ;
}
ACM-ICPC 2017 Asia Urumqi:A. Coins(DP)的更多相关文章
- ACM-ICPC 2017 Asia Urumqi:A. Coins(DP) 组合数学
Alice and Bob are playing a simple game. They line up a row of nn identical coins, all with the head ...
- 五大常用算法之二:动态规划算法(DP)
一.基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移.一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划. 二.基本思想与策略 基本 ...
- 2013 ACM/ICPC Asia Regional Changsha Online - G(DP)
第一眼就想到DP,然后想了N久就想不到可以不重算的DP 最后没办法了 先算出来 再去重.. 因为最多只有三个 对于三个来说有三种组合情况 x+y+z, x*y*z, x*y+z 那要么 x,y,z都 ...
- HDU1398:Square Coins(DP水题)
Square Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- ACM/ICPC 之 DFS求解欧拉回路+打表(POJ1392)
本题可以通过全部n位二进制数作点,而后可按照某点A的末位数与某点B的首位数相等来建立A->B有向边,以此构图,改有向图则是一个有向欧拉回路,以下我利用DFS暴力求解该欧拉回路得到的字典序最小的路 ...
- 习题:就是干(DP)
洛谷2301 题目描述 眼看着老师大军浩浩荡荡的向机房前进.LOI 的同学们决定动用自己的力量来保卫他们的好朋友loidc.现在每个人都要挑选自己的武器——两根木棍.一根用做远距离投掷,另一根用做近距 ...
- 九度OJ 1086:最小花费 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3960 解决:819 题目描述: 在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对应关系如下 ...
- 九度OJ 1101:计算表达式 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4340 解决:1335 题目描述: 对于一个不存在括号的表达式进行计算 输入: 存在多种数据,每组数据一行,表达式不存在空格 输出: 输出结 ...
- HDU6024:Building Shops(DP)
传送门 题意 在一条直线上有n个教室,现在要设置糖果店,使得最后成本最小,满足以下两个条件: 1.若该点为糖果店,费用为cost[i]; 2.若不是,则为loc[i]-最近的糖果店的loc 分析 dp ...
随机推荐
- 解决windows 挂载 nfs 驱动器中 中文乱码问题
乱码问题,是由于 mount.nfs 命令不支持 utf-8字符集.所以是系统软件支持的问题.在网络上找了很多方案都没能解决. 网上主要有三种方案(1)换解决方案,使用smb 共享,这等于不是解决方法 ...
- jenkins安装及配置-centos6.9
Jenkins安装及配置 目录 1.安装java. 2 1.1安装说明... 2 1.2创建java目录... 2 1.3下载并解压... 2 1.4设置环境变量... 2 1.5验证JDK有效性.. ...
- Centos7.5调试/etc/sysctl.conf文件导致宕机
今天安装greenplus数据库,需要调试一个核心文件/etc/sysctl.conf文件,结果导致系统异常宕机,出现的问题就是使用任何命令都不能输出正确的结果,只有这个显示: 不知道是什么原因,ls ...
- 4.3Python数据类型(3)之字符串类型
返回总目录 目录: 1.字符串的概念 2.字符串的形式 3.字符串的转义符 4.字符串一般操作 5.字符串函数操作 (一)字符串的概念 由单个字符组成的一个集合 (二)字符串的形式 双引号与单引号的效 ...
- January 11th, 2018 Week 02nd Thursday
Live, travel, adventure, bless, and don't be sorry. 精彩地活着,不停地前行,大胆冒险,心怀感激,不留遗憾. Everything we do is ...
- 天融信资料下载官方FTP服务器
2017年更新:最近发现天融信的FTP服务器变更为了ftp://ftp.topsec.com.cn/,用户名:topsec,密码:topsec2016(不知道后期密码会不会改成topsec2017,如 ...
- A类——Dima and a Bad XOR
http://codeforces.com/contest/1151/problem/B 题意: 给一个矩阵,只要找到每一列的任意一个异或和大于0,就找到解并返回,输出TAK和位置,没找到就输出NIE ...
- C# 语法五 单例类、单例模式
1.优点 只有一个实例 2.缺点 a)这个实例不能随时释放掉,占用资源. b)每次使用,都要判断是否为空,增加消耗 3.适用场景 只能有一个实例的业务场景,例如:数据库连接对象(每次连接都是同一个连接 ...
- ubuntu 14.04 sudo apt-get 简单 安装 ffmpeg
一种方法是这样的sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next sudo apt-get update sudo apt-get in ...
- (推荐)Skyline调用WMTS服务接口
文章地址 http://blog.csdn.net/chaiqi/article/details/9302373 供大家学习参考.