BZOJ2784: [JLOI2012]时间流逝

https://lydsy.com/JudgeOnline/problem.php?id=2784

分析:

  • 挺有意思的一道题。
  • 注意到状态数是\(P(T)\),由于\(T\le 50\),这个总数不会很大。
  • 于是我们暴力搜状态再\(dp\)。
  • 由于\(dp\)转移有从儿子到父亲这样的,我们用树上高斯消元就行了。
  • 特别需要注意的是每次随机产生的能量圈是在能够吃到的范围内随机的。

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
using namespace std;
#define N 1500050
typedef double f2;
int n,T;
f2 P,K[N],B[N],tmp;
int a[105],cnt;
int dfs(int pos,int sum) {
if(sum>T) return 0;
int x=++cnt;
int i;
K[x]=P; B[x]=x>1?P:0; f2 lhs=1;
f2 tmp=(1-(x>1?P:0))/pos;
for(i=1;i<=pos;i++) {
int t=dfs(i,sum+a[i]);
lhs-=K[t]*tmp;
B[x]+=(B[t]+1)*tmp;
}
K[x]/=lhs; B[x]/=lhs;
return x;
}
int main() {
while(scanf("%lf%d%d",&P,&T,&n)!=EOF) {
cnt=0;
int i;
for(i=1;i<=n;i++) scanf("%d",&a[i]);
sort(a+1,a+n+1);
printf("%.3f\n",B[dfs(n,0)]);
}
}

BZOJ2784: [JLOI2012]时间流逝的更多相关文章

  1. [JLOI2012]时间流逝

    Description: 你有n个食物,每个食物有\(a_i\)的价值,你每天有\(p_i\)的几率被抢走一个最小价值的食物,否则可以等概率获得所有食物中价值小于你拥有的食物中最大价值中的一个,问总价 ...

  2. bzoj 2784 [JLOI2012]时间流逝——树上高斯消元

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2784 一个状态可以加很多个能量圈,但减少能量圈的情况只有一种.所以可以用树来刻画. 然后就变 ...

  3. Luogu P3251 [JLOI2012]时间流逝 期望dp

    题面 题面 题解 期望\(dp\)好题! 今年\(ZJOI\)有讲过这题... 首先因为\(T\)只有\(50\),大力\(dfs\)后发现,可能的状态数最多只有\(20w\)左右,所以我们就可以大力 ...

  4. [JLOI2012]时间流逝 树上高斯消元 概率期望

    题面 题意:(感觉题面写的题意是错的?)有\(n\)种能量不同的圈,设当前拥有的圈的集合为\(S\),则: 1,每天有\(p\)概率失去一个能量最小的圈.特别的,如果\(S = \varnothing ...

  5. bzoj 2784: [JLOI2012]时间流逝【树形期望dp】

    来自lyd课件 发现s和last(s),next(s)成树结构,然后把式子化简成kx+b的形式,做树形dp即可 #include<iostream> #include<cstdio& ...

  6. Noip前的大抱佛脚----动态规划

    目录 动态规划 序列DP 背包问题 状态压缩以及拆分数 期望概率DP 马尔可夫过程 一类生成树计数问题 平方计数 动态规划 序列DP 有些问题: 求长度为\(l\)的上升子序列个数 形如一个值域的前缀 ...

  7. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

  8. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  9. BZOJ2783: [JLOI2012]树 dfs+set

    2783: [JLOI2012]树 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 588  Solved: 347 Description 数列 提交文 ...

随机推荐

  1. C# 学习黑马.Net视频教程,大文件拷贝

    设计器代码: namespace 大文件拷贝 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> ...

  2. 40个你可能不知道的Python的特点和技巧

    1.拆箱 >>> a, b, c = 1, 2, 3 >>> a, b, c (1, 2, 3) >>> a, b, c = [1, 2, 3] ...

  3. 跨平台移动开发 Xuijs超轻量级的框架+Emile CSS动画

    Xuijs超轻量级的框架+Emile CSS动画效果图 示例代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...

  4. linux上不能显示Jfreechart的图片文件

     出现错误: Jan 23, 2015 4:19:21 PM org.apache.catalina.core.StandardWrapperValve invokeSEVERE: Servlet.s ...

  5. [转载]Spring配置文件详解一:

    原文地址:与base-package="com.xx">Spring配置文件详解一:<context:annotation-config/>与<contex ...

  6. Nginad广告生成代码分析

    大家都知道实时竞价的广告一般会在一个iframe中,这个iframe会有一个复杂的src.那么这个iframe是如何生成的? 这里分析NginAd作为exchange时,如何让媒体网站通过引用一段ad ...

  7. QT 实现按住鼠标左键点击对话框空白处,拖动对话框

    定义头文件 QPoint move_point; //移动的距离     bool mouse_press; //按下鼠标左键 protected:     void mousePressEvent( ...

  8. C中的指针和字符串

    程序 #include<stdio.h>int main(void){ char *mesg="Don't be a fool!"; char *copy; copy= ...

  9. html5学习(新增元素)

    来源于<实战html5>contenteditable 规定是否可编辑元素的内容 css3圆角 border-radius旋转变换 transform:rotate(); 变换 trans ...

  10. jquery的队列问题

    队列,可以当成一个数组,也可以当成一个空间. 使用的地方: 在js这种异步操作的时候,我们不知道什么时候一个js代码加载完成,并且你还要保护一段代码只有一个模块在执行(按需加载的时候) 这个时候我们就 ...