博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU - 6409:没有兄弟的舞会(数学+思维)
阅读量:6380 次
发布时间:2019-06-23

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

链接:

题意:

题解:

求出最大的 l[i] 的最大值 L 和 r[i] 的最大值 R,那么 h 一定在 [L, R] 中。枚举每一个最大值,那么每一个区间的对于答案的贡献就是一个等差数列的和(乘法分配律),将每一个和乘起来就是该最大值的对于答案的贡献。但是相同最大值可能来自于多个区间,如果枚举每一个可能出现最大值的区间,那么会超时,所以需要一个神奇的方法,我也不知道原理是什么,但是数学上就是直接的式子,可以分解出来。

#include 
using namespace std;const double EPS = 1e-6;const int INF = 0x3f3f3f3f;const int mod = 1e9 + 7;const int maxn = 1e4 + 10;int n;int l[maxn], r[maxn];void Exgcd(long long a, long long b, long long& x, long long& y){ if(!b){ y = 0; x = 1; return ; } Exgcd(b, a % b, y, x); y -= a / b * x;}long long NY(long long a, long long b){ long long x, y; Exgcd(a, b, x, y); return (x % mod + mod) % mod;}long long Inv(int l[], int r[], int n){ long long ans = 1; for(int i = 0; i < n; i++){ ans = ans * (r[i] - l[i] + 1) % mod; } return NY(ans, mod);}int main(){ int T; scanf("%d", &T); while(T--){ scanf("%d", &n); int L = 0, R = 0; for(int i = 0; i < n; i++){ scanf("%d%d", &l[i], &r[i]); L = max(L, l[i]); R = max(R, r[i]); } long long ans = 0; for(int h = L; h <= R; h++){ long long cnt = 1, num = 1; for(int i = 0; i < n; i++){ long long x = h - l[i] + 1, y = max(0, h - r[i]) + 1; long long sum = (x + y) * (x - y + 1) / 2; cnt = cnt * sum % mod; if(r[i] >= h) num = num * (sum - 1) % mod; else num = num * sum % mod; } ans = ((ans + cnt - num) % mod + mod) % mod; } ans = ans * Inv(l, r, n) % mod; printf("%lld\n", ans); } return 0;}

 

转载于:https://www.cnblogs.com/chenquanwei/p/9510085.html

你可能感兴趣的文章
IOCP模型的总结
查看>>
红外图像处理
查看>>
Mysql基于GTID搭建主从同步
查看>>
Cloud in Action: Migrate OpenStack from Linux Bridge to Open vSwitch
查看>>
我的友情链接
查看>>
jenkins复制项目到新项目
查看>>
ElasticSearch的状态查看-06
查看>>
嵌入式 Linux C语言(十一)——C语言模块化编程
查看>>
关于yeoman安装时的环境变量设置
查看>>
Redis 响应延迟问题排查
查看>>
Python-文件的管理
查看>>
平衡树及笛卡尔树讲解(旋转treap,非旋转treap,splay,替罪羊树及可持久化)
查看>>
深入浅出CChart 每日一课——第八课 又见交互功能,旧爱重逢
查看>>
ActiveMQ学习总结(7)——ActiveMQ使用场景
查看>>
我的友情链接
查看>>
[javascript高手之路]寄生组合式继承的优势
查看>>
Error Message :This operation has been cancelled due to restrictions in effect on this computer
查看>>
VMware vSphere 5 和最新版5.5 下载地址
查看>>
基于Open×××连接两个远程局域网段
查看>>
在Secure CRT中使用sz,rz命令来上传和下载文件
查看>>