题意:玩一个共有n级的游戏,i级出发每次可以花a[i]的代价,有p[i]的几率变成i+1级,有1-p[i]的几率变成x[i]级,x[i]<=i

多次询问,每次询问从l级升到r级的期望总代价

n,q<=5e5,0<=a[i]<=1e9

思路:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef unsigned int uint;
  5. typedef unsigned long long ull;
  6. typedef pair<int,int> PII;
  7. typedef pair<ll,ll> Pll;
  8. typedef vector<int> VI;
  9. typedef vector<PII> VII;
  10. #define N 1100000
  11. #define M 4100000
  12. #define fi first
  13. #define se second
  14. #define MP make_pair
  15. #define pi acos(-1)
  16. #define mem(a,b) memset(a,b,sizeof(a))
  17. #define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
  18. #define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
  19. #define lowbit(x) x&(-x)
  20. #define Rand (rand()*(1<<16)+rand())
  21. #define id(x) ((x)<=B?(x):m-n/(x)+1)
  22. #define ls p<<1
  23. #define rs p<<1|1
  24.  
  25. const ll MOD=1e9+,inv2=(MOD+)/;
  26. double eps=1e-;
  27. int INF=1e9;
  28.  
  29. ll s[N];
  30.  
  31. ll read()
  32. {
  33. ll v=,f=;
  34. char c=getchar();
  35. while(c<||<c) {if(c=='-') f=-; c=getchar();}
  36. while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
  37. return v*f;
  38. }
  39.  
  40. ll pw(ll x,ll y)
  41. {
  42. ll t=;
  43. while(y)
  44. {
  45. if(y&) t=t*x%MOD;
  46. x=x*x%MOD;
  47. y>>=;
  48. }
  49. return t;
  50. }
  51.  
  52. int main()
  53. {
  54. //freopen("1.in","r",stdin);
  55. int cas;
  56. scanf("%d",&cas);
  57. while(cas--)
  58. {
  59. int n,q;
  60. scanf("%d%d",&n,&q);
  61. rep(i,,n) s[i]=;
  62. rep(i,,n)
  63. {
  64. ll ri=read(),si=read(),xi=read(),ai=read();
  65. ll fi=(si*ai%MOD+(si-ri+MOD)*(s[i-]-s[xi-]+MOD)%MOD)%MOD*pw(ri,MOD-)%MOD;
  66. //printf("i=%d fi=%I64d\n",i,fi);
  67. s[i]=(s[i-]+fi)%MOD;
  68. }
  69. rep(i,,q)
  70. {
  71. int l,r;
  72. scanf("%d%d",&l,&r);
  73. //printf("l=%d r=%d\n",l,r);
  74. printf("%I64d\n",(s[r-]-s[l-]+MOD)%MOD);
  75. }
  76. }
  77.  
  78. return ;
  79. }

【HDOJ6656】Kejin Player(期望DP)的更多相关文章

  1. HDU 6656 Kejin Player (期望DP 逆元)

    2019 杭电多校 7 1011 题目链接:HDU 6656 比赛链接:2019 Multi-University Training Contest 7 Problem Description Cub ...

  2. 2019 Multi-University Training Contest 7 Kejin Player 期望dp

    题目传送门 题意:有n个等级,在每个等级花费$ai$的代价有$pi$的几率升到$i+1$级,$1-pi$的概率降级降到$xi$(xi<=i),给出q次询问,每次询问从$l$级到$r$级的代价的期 ...

  3. hdu多校第七场 1011 (hdu6656) Kejin Player 概率dp

    题意: 一个游戏,有许多关,到下一关要花费金钱,做出尝试,有概率成功,若成功则到达下一关,若失败则停在此关或退回到前面某关,询问第l关到第r关的期望费用 题解: 显然,第r关到第l关的费用是dp[r] ...

  4. 2019 Multi-University Training Contest 7 Kejin Player(期望)

    题意:给定在当前等级升级所需要的花费 每次升级可能会失败并且掉级 然后q次询问从l到r级花费的期望 思路:对于单次升级的期望 我们可以列出方程: 所以我们可以统计一下前缀和 每次询问O1回答 #inc ...

  5. 2019 Multi-University Training Contest 7 Kejin Player Final Exam

    Kejin Player 期望DP 题意: 初始等级为1,每一级有四个参数 r , s , x , a . 每一级有一个概率p=r/s花费a的代价升级到下一级,失败可能会倒退到x级 设从 l 到 r ...

  6. 升级降级(期望DP)2019 Multi-University Training Contest 7 hdu杭电多校第7场(Kejin Player)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意: 有 1~n 个等级,你现在是1级,求升到n级的花费期望.会给你n个条件(i~i+1级升级 ...

  7. 2019HDU多校第七场 HDU6656 Kejin Player H 【期望递归】

    一.题目 Kejin Player H 二.分析 因为在当前等级$i$,如果升级失败可能会退回到原来的某一等级$x$,相当于就是失败的期望就是$E + (Sum[i-1] - Sum[x-1]) + ...

  8. 【BZOJ-1419】Red is good 概率期望DP

    1419: Red is good Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 660  Solved: 257[Submit][Status][Di ...

  9. [NOIP2016]换教室 D1 T3 Floyed+期望DP

    [NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...

  10. HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

随机推荐

  1. 阿里云ipv6安全组匹配所有ip的方法

    IPv4和IPv6通信彼此独立.您需要为ECS实例单独配置IPv6安全组规则. 操作步骤 登录ECS控制台. 在左侧导航栏,单击网络和安全 > 安全组. 找到目标安全组,然后单击配置规则. 单击 ...

  2. Week2 - 669. Trim a Binary Search Tree & 617. Merge Two Binary Trees

    Week2 - 669. Trim a Binary Search Tree & 617. Merge Two Binary Trees 669.Trim a Binary Search Tr ...

  3. 正则表达式——POSIX字符组

    前面介绍了常用的字符组,但是在某些文档中,你可能会发现类似[:digit:].[:lower:]之类的字符组,看起来不难理解(digit就是"数字",lower就是"小写 ...

  4. 浅谈vue父子组件之间的传值

    前言:本章主要说下父子组件的传值,为商品列表组件之间的传值做一个基础预热.Github:https://github.com/Ewall1106/mall(请选择分支chapter23) 1.父组件向 ...

  5. 转载-linux挂载的意思

    挂载:Liunx采用树形的文件管理系统,也就是在Linux系统中,可以说已经没有分区的概念了.分区在Linux和其他设备一样都只是一个文件.要使用一个分区必须把它加载到文件系统中.这可能难于理解,继续 ...

  6. 【mysql】select子句顺序

    sleect…from (1)where (2)group by (3)having (4)order by (5)limit

  7. MongoDB查询系统

    首先,我们先向集合(collections)中添加测试文档(documents).如下: > for(i=1;i<=5;i++) db.test.insert({x:i,y:i*i,z:6 ...

  8. (转载)图解Java多态内存分配以及多态中成员方法的特点

    图解Java多态内存分配以及多态中成员方法的特点   图解Java多态内存分配以及多态中成员方法的特点   Person worker = new Worker(); 子类实例对象地址赋值给父类类型引 ...

  9. yield-Python大牛必须掌握的高端语法

    小白:大牛哥,刚才看到有一个函数不使用return返回结果,而是使用yield关键字返回结果,看不太明白,Python中yield关键字的用途是什么,它有什么作用呀? 大牛: 要想理解yield的作用 ...

  10. 问题 H: 小k的简单问题

    问题 H: 小k的简单问题 时间限制: 1 Sec  内存限制: 128 MB提交: 107  解决: 57[提交] [状态] [命题人:jsu_admin] 题目描述 地图上有n个村庄,小k每个月需 ...