HDU 6656 Kejin Player
2024-09-05 16:59:53
- Time limit 5000 ms
- Memory limit 524288 kB
- OS Windows
解题思路
因为升级只能一级一级地升,所以所求期望满足了区间加的性质,可以一级一级地算,然后求前缀和、输出(状态不好,临博客涕零,不知所言)
接着扔链接(留坑)
- 这篇博客推公式的时候好像有些地方下标有点错,而且推公式的过程省了不少(雾)https://blog.csdn.net/toohandsomeIeaseId/article/details/99357608
- 这篇推公式的方向对我来说好新颖,进行非整数次的氪金,这样就不用死磕无穷级数了……(我的猴子排序那篇也可以计算快点了)https://blog.csdn.net/qq_41785863/article/details/99347386
源代码
参考别人博客写的,感觉像抄的一样
#include<stdio.h>
const int mod=1e9+7;
const int MAXN=5e5+5;
int T;
int n,m;
long long inv(long long x)//快速幂求逆元 inv[a]=a^(p-2)
{
long long res=1LL;
long long b=mod-2;
while(b){
if(b&1) res=res*x%mod;
x*=x;
x%=mod;
b>>=1;
}
return res%mod;
}
long long sum[MAXN];
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
sum[0] = 0;
for(int i = 1; i <= n; ++i)
{
long long r, s, x, a;
scanf("%lld%lld%lld%lld", &r, &s, &x, &a);
long long p = r * inv(s) % mod;
sum[i] = (sum[i - 1] + (a + (1 - p + mod) % mod * (a + sum[i - 1] - sum[x - 1] + mod) % mod * inv(p) % mod) % mod + mod) % mod;//关键就是这个了
}
while(m--)
{
int l, r;
scanf("%d%d", &l, &r);
long long ans = (sum[r - 1] - sum[l - 1] + mod) % mod;//这里为啥来着……
printf("%lld\n", ans);
}
}
return 0;
}
最新文章
- Codeforces Round #344 (Div. 2) B. Print Check
- (DNS被劫持所导致的)QQ音乐与视频网页打开很慢的解决方法
- 关于PB调用Microsoft Web Browser控件的一些问题
- mac_snailSVN
- java归并排序,单线程vs多线程
- GridView获取当前行
- Java for LeetCode 070 Climbing Stairs
- 转一个 C#基础类库
- jquery获取div距离顶部的距离
- Hadoop 7、MapReduce执行环境配置
- ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统
- Google Dremel 原理 - 如何能3秒分析1PB
- 算法录 之 BFS和DFS
- 测试与发布(Alpha版本)
- C#图解教程 第十六章 转换
- 记一次jar包冲突
- 关于阿里云Centos7 Mailx发送邮件失败的处理
- JUnit单元测试代码
- Tween animation
- 常用jQuery知识
热门文章
- Windows 下 C/C++ 多线程编程入门参考范例
- 使用Jenkins结合Gogs和SonarQube对项目代码进行测试、部署、回滚,以及使用keepalived+haproxy调度至后端tomcat
- c# 模拟post登录
- 使用git配置ssh的文章推荐
- Java中的==和equals( )方法
- 【TensorFlow探索之一】MNIST的初步尝试
- linux c 链接详解3-静态库
- Qt Creator 4.9 发布
- Django学习系列7:使用模板解决“不测试常量”规则,使用模板重构
- [每日一学]apache camel简介