挺不错的概率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)的更多相关文章

  1. 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 ...

  2. 五大常用算法之二:动态规划算法(DP)

    一.基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移.一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划. 二.基本思想与策略 基本 ...

  3. 2013 ACM/ICPC Asia Regional Changsha Online - G(DP)

    第一眼就想到DP,然后想了N久就想不到可以不重算的DP  最后没办法了 先算出来 再去重.. 因为最多只有三个 对于三个来说有三种组合情况 x+y+z, x*y*z, x*y+z 那要么 x,y,z都 ...

  4. HDU1398:Square Coins(DP水题)

    Square Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  5. ACM/ICPC 之 DFS求解欧拉回路+打表(POJ1392)

    本题可以通过全部n位二进制数作点,而后可按照某点A的末位数与某点B的首位数相等来建立A->B有向边,以此构图,改有向图则是一个有向欧拉回路,以下我利用DFS暴力求解该欧拉回路得到的字典序最小的路 ...

  6. 习题:就是干(DP)

    洛谷2301 题目描述 眼看着老师大军浩浩荡荡的向机房前进.LOI 的同学们决定动用自己的力量来保卫他们的好朋友loidc.现在每个人都要挑选自己的武器——两根木棍.一根用做远距离投掷,另一根用做近距 ...

  7. 九度OJ 1086:最小花费 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3960 解决:819 题目描述: 在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对应关系如下 ...

  8. 九度OJ 1101:计算表达式 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4340 解决:1335 题目描述: 对于一个不存在括号的表达式进行计算 输入: 存在多种数据,每组数据一行,表达式不存在空格 输出: 输出结 ...

  9. HDU6024:Building Shops(DP)

    传送门 题意 在一条直线上有n个教室,现在要设置糖果店,使得最后成本最小,满足以下两个条件: 1.若该点为糖果店,费用为cost[i]; 2.若不是,则为loc[i]-最近的糖果店的loc 分析 dp ...

随机推荐

  1. iptable用法

    一:添加屏蔽IP #禁止此IP访问服务器iptables -I INPUT -s 1.2.3.4 -j DROP或iptables -A INPUT -s 1.2.3.4 -j DROP#禁止服务器访 ...

  2. Windows Server 2012 RS 配置IIS8.0+发布网站

    一.配置iis 8.0 IIS 8.0 是 windows server 2012 自带的服务器管理系统.相比之前版本,IIS 8.0 安装和操作都更加简单,界面也很简洁,安装也很迅速. 1. 进入w ...

  3. Lua 与 C 交互之UserData(4)

    lua作为脚本于要能够使用宿主语言的类型,不管是宿主基本的或者扩展的类型结构,所以Lua提供的UserData来满足扩展的需求.在Lua中使用宿主语言的类型至少要考虑到几个方面: 数据内存 生命周期 ...

  4. JDBC lesson 1

    https://www.mkyong.com/tutorials/jdbc-tutorials/ 1.jdbc基本概念 Java Database Connectivity (JDBC)是一套提供数据 ...

  5. 拓普微小尺寸TFT液晶屏-高性价比

    智能模块(Smart LCD)是专为工业显示应用而设计的TFT液晶显示模块. 模块自带主控IC.Flash存储器.实时嵌入式操作系统,客户主机可把要存储的数据(如背景图.图标等)存储到屏的flash中 ...

  6. MyCat读写分离、分库分表

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  7. cmd 监控网络状况

    提示:如果提示curl不是内部命令,请自行百度 windows 安装curl @echo off color 1f title 正在监控 echo 正在监控http://ioscheck.duapp. ...

  8. 如何使用openscad绘制一个简单的键帽.

    1 新建空项目 2测数据 测量得出数据.这个长方体的长宽高分别是1.6.4.6.8 注意,这三个数据并不是测量得到的数据,而且加了一点公差值(为3D打印做准备) 3画图 写代码 导入模型 为了方便以后 ...

  9. 360极速浏览器极速模式通过hosts文件切换兼容模式bat脚本

    注意:需要获得管理员权限执行,且后缀为 .bat @echo offsetlocal enabledelayedexpansionset url=被替换的域名set ip=替换的域名set strNe ...

  10. OpenGL ES SL 3.0规范中以前的attribute改成了in varying改成了out

           OpenGL ES和OpenGL的图标 关于“OpenGL ES SL 3.0规范中以前的attribute改成了in varying改成了out”这个问题,做一阐述: 1.关键字的小修 ...