一、题目

  Kejin Player H

二、分析

  因为在当前等级$i$,如果升级失败可能会退回到原来的某一等级$x$,相当于就是失败的期望就是$E + (Sum[i-1] - Sum[x-1]) + a$,所以可以推导出当前期望的公式$$E = {a}\times{p} + {[E + (Sum[i-1] - Sum[x-1]) + a]}\times{(1 - p)}$$

  这个公式是可以化简的,最终的得到$$E = \frac{(Sum[i-1] - Sum[x-1]) + a}{p} - (Sum[i-1] - Sum[x-1])$$

  对于同余下的除法,直接用逆元就可以了,一定要注意可能溢出的地方及时取模。

三、AC代码

#include <bits/stdc++.h>

using namespace std;
#define ll long long
#define Min(a,b) ((a)>(b)?(b):(a))
#define Max(a,b) ((a)>(b)?(a):(b))
const ll mod = 1e9 + 7;
const int maxn = 5e5 + 13;
ll E[maxn], Sum[maxn]; ll inv(ll a, ll m)
{
if(a == 1)
return 1;
return inv(m%a, m)*(m - m/a)%m;
} int main()
{
// freopen("input.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
int T;
scanf("%d", &T);
while(T--)
{
E[1] = 0;
Sum[0] = 0;
int N, Q, qL, qR;
ll R, S, X, A;
scanf("%d%d", &N, &Q);
for(int i = 1; i <= N; i++)
{
scanf("%lld%lld%lld%lld", &R, &S, &X, &A);
ll deta = Sum[i-1] - Sum[X-1];
E[i] = (((deta + A) * S % mod * inv(R, mod) % mod)- deta + mod ) % mod;
Sum[i] = (Sum[i-1] + E[i])%mod;
// cout << i << " " << E[i] << " " << Sum[i] << endl;
}
for(int i = 1; i <= Q; i++)
{
scanf("%d%d", &qL, &qR);
printf("%lld\n", (Sum[qR - 1] - Sum[qL-1] + mod)%mod );
}
}
return 0;
} /*
1
3 2
1 1 1 2
1 2 1 3
1 3 3 4
1 4
3 4
*/

最新文章

  1. MySQL的数据模型
  2. My97DatePickerBeta 日历插件
  3. MVC中使用SignaIR入门教程
  4. ros使用rplidar hector_mapping建地图
  5. php利用smtp发送邮件
  6. MVC设计模式
  7. Oracle VirtualBox 模拟Android系统 素材
  8. 初识 python
  9. MVC之文件上传1
  10. Linux 启动过程的详细解释
  11. JavaScript实例技巧精选(14)—动态变化背景颜色
  12. 文件断点续传原理与实现—— ESFramework 通信框架4.0 进阶(12)
  13. tensorflow入门教程
  14. C# 打印 长字符串自动换行
  15. LinqPad的变量比较功能
  16. Fortinet Security Fabric
  17. C#委托、事件剖析(下)
  18. PLSQL_数据结构类型的解析(概念)
  19. 关于Cocos Creator用js脚本代码播放骨骼动画的步骤和注意事项
  20. 【BZOJ】1011: [HNOI2008]遥远的行星(近似)

热门文章

  1. 【python接口自动化】- PyMySQL数据连接
  2. 一个操作系统的实现sudo mount -o loop pm.img /mnt/floppy mount point /mnt/floppy does not exist losetup device is busy
  3. React Hooks: useMemo All In One
  4. TypeScript &amp; WebAssembly
  5. TypeScript Learning Paths
  6. React SSR in Action
  7. lua调用dll导出的函数
  8. [转]C++语言的历史和标准化
  9. 宝塔面板配置Let&#39;s Encrypt证书自动续签失效及解决方案
  10. 遇见ZooKeeper:初识