题目

题目

思路

期望dp。
设 a i , j a_{i,j} ai,j​为前i个人中,第j个人活到最后的情况。
显然有:
a i , j = P ∗ a i − 1 , j − 1 + ( 1 − P ) ∗ a i , j − 1 , 1 < = i < = n , 1 < = j < = i a_{i,j}=P*a_{i-1,j-1}+(1-P)*a_{i,j-1},1<=i<=n,1<=j<=i ai,j​=P∗ai−1,j−1​+(1−P)∗ai,j−1​,1<=i<=n,1<=j<=i
同时有:
∑ j = 1 i a i , j = 1 \sum^{i}_{j=1}a_{i,j}=1 ∑j=1i​ai,j​=1
那么这里一共n个方程,全部高斯消元?
TLE妥妥地
所以我们不能用高斯消元,那么我们如何提速呢?
n只有 1 0 4 10^4 104,所以可以n方算法,这么说这里计算方程只能O(n)了?
没错,当然是O(n)!
按循环顺序,显然方程第一项是个常数了,我们只需要考虑后面的,运用递归知识(这里O(n)),我们可以求出一个这样的柿子:
x ∗ a i , 1 + y = 1 x*a_{i,1}+y=1 x∗ai,1​+y=1,进一步可得 a i , 1 a_{i,1} ai,1​,这里就可以递推出 a i , 2 … … a i , i a_{i,2}……a_{i,i} ai,2​……ai,i​.
不要忘记特判 P P P为0的情况。
code:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
using namespace std;
double p,a[10010],b[10010],c,d,lc,ld;
int n,k;
void f(int x)
{if (x==1){c=1,d=0,lc=1,ld=0;return;}f(x-1);c=(1-p)*c;d=p*b[x]+(1-p)*d;lc+=c,ld+=d;return;
}
int main()
{cin>>p>>n>>k;if (p==0)//加特林瓦特了{cout<<(n<=1);return 0;}b[2]=a[1]=1;for (int i=2;i<=n;i++){f(i);a[1]=(1-ld)/lc;for (int j=2;j<=i;j++) a[j]=p*b[j]+(1-p)*a[j-1];for (int j=2;j<=i+1;j++) b[j]=a[j-1];}printf("%.12lf",a[k]);return 0;
}

P5249 [LnOI2019]加特林轮盘赌相关推荐

  1. 洛谷[LnOI2019]长脖子鹿省选模拟赛 简要题解

    传送门 听说比赛的时候T4T4T4标程锅了??? WTF换我时间我要写T3啊 于是在T4T4T4调半天无果的情况下260pts260pts260pts收场真的是tcltcltcl. T1 快速多项式变 ...

  2. 轮盘赌算法的简单说明

    轮盘赌算法经常用于遗传算法中来进选择.基本思想:各个个体被选中的概率与其适应度成正比(适者生存).主要步骤如下: 1.计算种群中每个个体被选中的概率(在遗传算法中根据适应度来决定选择概率). 2.计算 ...

  3. 2018-3-27 遗传算法中的轮盘赌

    原出处:http://my.oschina.net/u/1412321/blog/192454 一.遗传算法的应用 函数优化(遗传算法的经典应用领域): 组合优化(实践证明,遗传算法对于组合优化中的N ...

  4. java轮盘赌_java人工蜂群算法求解TSP问题

    初始化: 重复以下过程: 将采蜜蜂与蜜源一一对应,根据上面第一个公式更新蜜源信息,同时确定蜜源的花蜜量: 观察蜂根据采蜜蜂所提供的信息采用一定的选择策略选择蜜源,根据第一个公式更新蜜源信息,同时确定蜜 ...

  5. 轮盘赌算法的java实现算例

    轮盘赌介绍 算法实现 package test;public class Test {public static double[] multiPros;public static void main( ...

  6. 线性表:7.C语言链表实现俄罗斯轮盘赌小游戏

    俄罗斯轮盘赌,想必很多人都听说过,一种残忍的赌博游戏.游戏的道具是一把左轮手枪,其规则也很简单:在左轮手枪中的 6 个弹槽中随意放入一颗或者多颗子弹,在任意旋转转轮之后,关上转轮.游戏的参加者轮流把手 ...

  7. 愚公移山和加特林打僵尸(递归)

    今日坑题: 问题一:愚公移山 描述 这是一题简单的题目,考的只是你的数学而已.我一直都很好奇愚公一家到底有 多少人.好吧,毛学姐说你们会帮我的.假设愚公家族 每个人的一生是这样度过 的:(当他回首往事 ...

  8. java轮盘赌_轮盘赌算法

    蚁群算法作为一种启发式算法,在进行路径选择的过程中,当选择下一目标时,通过轮盘赌概率选择的方式完成,这也保证了每次循环都能随机的命中概率较大的目标.其算法思路如下: 设P(i),其中i=1..n,为n ...

  9. 轮盘赌算法-Roulette

    设P(i),其中i=1..n,为n个个体被选择的概率,在轮盘上表示为所占扇区的面积百分比,这里显然sum(P)=1.select用来保存n次选择的结果. 1) 第一种实现办法:可以想象一个转动的轮盘, ...

  10. 轮盘赌算法原理(ACO算法概率选择方法)

    蚁群算法作为一种启发式算法,在进行路径选择的过程中,当选择下一目标时,通过轮盘赌概率选择的方式完成,这也保证了每次循环都能随机的命中概率较大的目标.其算法思路如下: 设P(i),其中i=1..n, ...

最新文章

  1. python大数据免费_安利大家一个Python大数据分析神器
  2. puppet 自定义facter
  3. Android-Universal-Image-Loader三大组件DisplayImageOptions、ImageLoader、ImageLoaderConfiguration详解...
  4. 别再只盯着国外!在集设发现了优秀设计师原创作品!
  5. jmstudio 摄像头获取不到_什么是全景摄像头?
  6. python 回溯法 01背包问题_回溯法解决01背包问题
  7. 【数据结构和算法笔记】数组(数组的储存方式和特殊矩阵的压缩储存)
  8. 2×3卡方检验prism_卡方检验(最强总结)
  9. 不同CPU指令的指令集密度
  10. Linux三剑客之grep
  11. 使用SnakeYAML读取yaml配置文件
  12. matlab华侨大学,范文涛
  13. 用python开发一款云笔记_Python成为专业人士笔记–os模块
  14. 四、DNS设置转发器
  15. 要么旅行,要么读书,身体和灵魂必须有一个在路上
  16. 秒云“生活梦想家”计划,从一杯手冲开启
  17. 图像处理计算机考试,计算机图形图像处理试题(A)(含答案).doc
  18. 用java实现网络爬虫,实时获取中国地震台网数据
  19. dataGrip导出sql脚本
  20. ubuntu16.04安装破解matlab2016详细教程

热门文章

  1. Apache Log4j2紧急缓解措施
  2. Java第四天上课笔记
  3. 定义一个函数,用于求2017年1月到month前一个月的总天数
  4. 飞畅科技关于网管型环网交换机的工作原理介绍
  5. 全国青少年电子信息智能创新大赛(决赛)python·模拟五卷,含答案解析
  6. 热加工作业考研题目答案分享——metal casting 2
  7. 延大西院计算机学院,想考985分数却不够?这8所性价比超高的985高校,是你最后的希望!...
  8. ege实现简易版贪吃蛇
  9. java计算机毕业设计家政服务网站源码+数据库+lw文档+系统
  10. 浏览器端的几种存储技术