题意:玩一个共有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

思路:

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<ll,ll> Pll;
typedef vector<int> VI;
typedef vector<PII> VII;
#define N 1100000
#define M 4100000
#define fi first
#define se second
#define MP make_pair
#define pi acos(-1)
#define mem(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
#define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
#define lowbit(x) x&(-x)
#define Rand (rand()*(1<<16)+rand())
#define id(x) ((x)<=B?(x):m-n/(x)+1)
#define ls p<<1
#define rs p<<1|1 const ll MOD=1e9+,inv2=(MOD+)/;
double eps=1e-;
int INF=1e9; ll s[N]; ll read()
{
ll v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} ll pw(ll x,ll y)
{
ll t=;
while(y)
{
if(y&) t=t*x%MOD;
x=x*x%MOD;
y>>=;
}
return t;
} int main()
{
//freopen("1.in","r",stdin);
int cas;
scanf("%d",&cas);
while(cas--)
{
int n,q;
scanf("%d%d",&n,&q);
rep(i,,n) s[i]=;
rep(i,,n)
{
ll ri=read(),si=read(),xi=read(),ai=read();
ll fi=(si*ai%MOD+(si-ri+MOD)*(s[i-]-s[xi-]+MOD)%MOD)%MOD*pw(ri,MOD-)%MOD;
//printf("i=%d fi=%I64d\n",i,fi);
s[i]=(s[i-]+fi)%MOD;
}
rep(i,,q)
{
int l,r;
scanf("%d%d",&l,&r);
//printf("l=%d r=%d\n",l,r);
printf("%I64d\n",(s[r-]-s[l-]+MOD)%MOD);
}
} return ;
}

最新文章

  1. [LeetCode] Additive Number 加法数
  2. Python标准模块--functools
  3. 记一个eclipse 错误 Undefined variable from import: randrange
  4. React+Node.js+Express+mongoskin+MongoDB
  5. 详解KMP算法
  6. CSS常用的属性命名
  7. 详细讲解 关于Linux静态库和动态库的分析
  8. Tomcat 配置 Probe 监控
  9. linux文件权限整理
  10. 好博客分享 go需要运行容器? 不需要
  11. Linux环境下编译并执行ava helloworld程序
  12. RocketMQ 介绍与基本使用
  13. (3).NET CORE微服务 Micro-Service ---- Consul服务治理
  14. Linux 环境下使用g++编译C++
  15. 简单标签SimpleTag
  16. 查看本地Git仓库历史修改内容
  17. cpan安装报错Invalid host name on line 1 at *FirstTime.pm line 1857.
  18. CC2530学习路线-基础实验-串口通讯发送字符串(4 未完待续)
  19. android studio *.apk does not exist on disk
  20. js最简单的动画

热门文章

  1. 锐捷网络自动连接python脚本
  2. Implement Queue using Stacks(用两个栈实现队列)
  3. git ssh key配置&amp;解决git每次输入密码
  4. dp(电梯与楼梯)
  5. markDown 生成带侧边栏的目录
  6. SCAU 2015 GDCPC team_training1
  7. k3 cloud工程量清单调整后工程量为零行设置为黄色
  8. Nodejs的模块化
  9. Hadoop MapReduce实现人员二度关系运算
  10. 线程局部变量ThreadLocal实现原理