博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 6656 Kejin Player
阅读量:5312 次
发布时间:2019-06-14

本文共 1252 字,大约阅读时间需要 4 分钟。

  • Time limit 5000 ms
  • Memory limit 524288 kB
  • OS Windows

解题思路

因为升级只能一级一级地升,所以所求期望满足了区间加的性质,可以一级一级地算,然后求前缀和、输出(状态不好,临博客涕零,不知所言)

接着扔链接(留坑)

  • 这篇博客推公式的时候好像有些地方下标有点错,而且推公式的过程省了不少(雾)
  • 这篇推公式的方向对我来说好新颖,进行非整数次的氪金,这样就不用死磕无穷级数了……(我的那篇也可以计算快点了)

源代码

参考别人博客写的,感觉像抄的一样

#include
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;}

转载于:https://www.cnblogs.com/wawcac-blog/p/11349562.html

你可能感兴趣的文章
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
变量提升
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
三.野指针和free
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
Spring面试题
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>