51nod 1450 闯关游戏——期望dp
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1450
想了半天,不知道不能走的状态(即最后不足m个的状态)怎么办。去吃晚饭的路上想到那种也是转移到 f[ i ][ j ] 自己,因为意义是需要再来一次,状态没有前进。
想出那个之前稍微看了点题解,不过只看到需要按 y 排序。若非此自己可能还想不到要排序。还对拍验证了一下,确实有差异。
把 y 大的排在前面,x 值大是第二关键字。之所以排在前面,是因为前面的影响更大(是倒着推的,所以排在后面,为了先算上),就想搜索的时候把分叉少的排在前面一样。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define db double
using namespace std;
const int N=; const db INF=0x3f3f3f3f;
int n,m;
db f[N][N<<];
struct Node{
db x,y,z;
}a[N];
bool cmp(Node u,Node v){return u.y==v.y?u.x<v.x:u.y<v.y;}
int rdn()
{
int ret=,fx=; char ch=getchar();
while(ch>''||ch<''){ if(ch=='-') fx=-; ch=getchar();}
while(ch>=''&&ch<='') ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return ret;
}
int main()
{
// freopen("51nod1450-data.in","r",stdin);
// freopen("51nod1450-bl.out","w",stdout);
n=rdn(); m=rdn();
for(int i=;i<=n;i++)
a[i].x=(db)rdn()/,a[i].y=(db)rdn()/,a[i].z=-a[i].x-a[i].y;
sort(a+,a+n+,cmp);
for(int i=;i<m;i++) f[n+][i]=INF;
for(int i=m,d=((n+)<<);i<=d;i++) f[n+][i]=;
for(int i=n;i;i--)
for(int j=,d=(i<<);j<=d;j++)
{
// printf("i=%d j=%d\n",i,j);
// printf("f[i+1][j+1]=%.8lf f[i+1][j+2]=%.8lf\n",f[i+1][j+1],f[i+1][j+2]);
if(f[i+][j+]==INF)
{
if(f[i+][j+]==INF)
f[i][j]=INF;
else f[i][j]=(a[i].y*f[i+][j+]+)/(-a[i].x-a[i].z);
}
else f[i][j]=(a[i].x*f[i+][j+]+a[i].y*f[i+][j+]+)/(-a[i].z);
// printf("f[%d][%d]=%.8lf\n",i,j,f[i][j]);
}
printf("%.8lf\n",f[][]);
return ;
}
51nod 1450 闯关游戏——期望dp的更多相关文章
- 51Nod 1450 闯关游戏 —— 期望DP
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1450 期望DP: INF 表示这种情况不行,转移时把不行的概率也转 ...
- 51nod 1450 闯关游戏
首先肯定要先把所有的关卡打通后去找两星几率最大的关卡刷星(论打游戏经验的重要性). 所以从两星几率小的关打起,记录当前拿到x个星星的几率和当前走过的期望步数,如果发现剩下的关必须全两星,就直接计算答案 ...
- 网页闯关游戏(riddle webgame)--H5刮刮卡的原理和实践
前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. 对于刮刮卡, 想必大家都很熟悉, 也很喜 ...
- 网页闯关游戏(riddle webgame)--SQL注入的潘多拉魔盒
前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. web开发初学者往往会忽视一些常见的漏洞 ...
- 网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. 本文讲描述, 如何在网页端实现一个仿微信 ...
- 网页闯关游戏(riddle webgame)--游戏玩法和整体介绍
前言: 记得上大学那会, 有位传说中的大牛, 写了一个网页闯关类的游戏. 当时我们玩得不亦乐乎, 也是第一次接触到这种形式的游戏. 不过当时纯玩家心态, 并没有想过去创造一个. 最近想起这事, 突然想 ...
- 51nod1450 闯关游戏
题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 320 一个游戏App由N个小游戏(关卡)构成,将其标记为0,1,2,..N-1.这些小游戏没有相互制约的性质 ...
- [SCOI2008]奖励关(期望dp)
你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...
- XSS闯关游戏准备阶段及XSS构造方法
请下载好XSS闯关文件后,解压后放在服务器的对应文件夹即可 在该闯关中,会在网页提示一个payload数值 payload,翻译过来是有效载荷 通常在传输数据时,为了使数据传输更可靠,要把原始数据分批 ...
随机推荐
- Python高级编程第二版--笔记
不只是CPython Stackless Python Jython(与java集成) IronPython(与net集成) PyPy python真正出众的领域在于围绕语言打造的整个生态系统. Py ...
- 为什么要对url进行encode
发现现在几乎所有的网站都对url中的汉字和特殊的字符,进行了urlencode操作,也就是: http://hi.baidu.com/%BE%B2%D0%C4%C0%CF%C8%CB/creat/bl ...
- Webpack探索【7】--- sourceMap、自动构建刷新功能详解
本文主要讲sourceMap.自动构建刷新功能.
- 换教室(期望+DP)
换教室(期望+DP) \(dp(i,j,1/0)\)表示第\(i\)节课,申请了\(j\)次调换,这节课\(1/0\)调换. 换教室 转移的时候考虑: 上次没申请 这次也没申请 加上\(dis(fr[ ...
- Eclipse +Tomcat配置-【菜鸟学JAVA】
说起来也惭愧,以前用(Unieap)工具搞了一年多的JAVA+Oracle,现在居然在Eclipse中配置tomcat都搞了半天时间,原来一直是做.NET的. 今天开始不再用集成的环境,话不多说,开始 ...
- java面试之数据库面试知识点【转】
1. 主键 超键 候选键 外键 主 键: 数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合.一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null). 超 键: 在关系中 ...
- LeetCode:零钱兑换【322】【DP】
LeetCode:零钱兑换[322][DP] 题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成 ...
- afinal 文件上传、下载、图片加载实例
// Afinal框架讲解 public class AfinalActivity extends FinalActivity { @ViewInject(id=R.id.bt_afinal_load ...
- 基于事件驱动的前端通信框架(封装socket.io)
socket.io的使用可以很轻松的实现websockets,兼容所有浏览器,提供实时的用户体验,并且为程序员提供客户端与服务端一致的编程体验.但是在使用socket.io的过程中,由于业务需求需要同 ...
- Data Structure Linked List: Merge Sort for Linked Lists
http://www.geeksforgeeks.org/merge-sort-for-linked-list/ #include <iostream> #include <vect ...