这莫队太强啦

先推公式S(n,m)表示从C(n, 0) 到 C(n, m)的总和

1.S(n, m)   = S(n, m-1) + C(n, m) 这个直接可以转移得到

2.S(n, m)   = S(n, m+1) - C(n, m+1) 通过变形就可以得到。

3.S(n, m)   = C(n, 0) + C(n, 1) + C(n, 2) + ... + C(n, m)

     = C(n-1, 0) + C(n-1, 0) + C(n-1, 1) + C(n-1, 1) + C(n-1, 2) + ... +C(n-1, m-1) + C(n-1, m)

     = 2S(n-1, m) - C(n-1, m)

4.S(n, m)   = (S(n+1, m) + C(n, m) ) / 2

然后求C(n, m)的时候打表存不下,所以就用C(n, m) = n!/ (m! * (n-m)!)

然后除法部分用逆元保证一下精度就可以了

然后就可以直接套莫队了

#include<map>
#include<set>
#include<ctime>
#include<cmath>
#include<stack>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define lowbit(x) (x & (-x)) typedef unsigned long long int ull;
typedef long long int ll;
const double pi = 4.0*atan(1.0);
const int inf = 0x3f3f3f3f;
const int maxn = 1e5+;
const int maxm = ;
const int mod = 1e9+;
using namespace std; int n, m, tol, T;
int block;
struct Node {
int l;
int r;
int id;
bool operator < (Node a) const {
return l/block != a.l/block ? l/block < a.l/block : r < a.r;
}
};
Node node[maxn];
ll res[maxn];
ll fac[maxn];
ll inv[maxn];
ll ans; void init() {
ans = ;
memset(res, , sizeof res);
memset(node, , sizeof node);
} ll fa_pow(ll a, ll b) {
ll ans = ;
a %= mod;
while(b) {
if(b & )
ans = ans * a % mod;
a = a * a % mod;
b >>= ;
}
return ans % mod;
} void handle() {
fac[] = ;
inv[] = ;
for(int i=; i<=; i++) {
fac[i] = fac[i-] * i;
fac[i] %= mod;
inv[i] = fa_pow(fac[i], mod-);
}
} ll C(int n1, int m1) {
if(m1 > n1) return ;
ll ans = fac[n1] * inv[m1] % mod * inv[n1-m1] % mod;
return ans;
} int main() {
init();
handle();
scanf("%d", &n);
block = sqrt(n);
for(int i=; i<=n; i++) scanf("%d%d", &node[i].l, &node[i].r), node[i].id = i;
sort(node+, node++n);
int L = ;
int R = ;
for(int i=; i<=n; i++) {
while(L > node[i].l) {
L--;
ans = (ans + C(L, R)) % mod * inv[] % mod;
}
while(L < node[i].l) {
ans = (ans * % mod - C(L, R)) % mod + mod;
ans %= mod;
L++;
}
while(R < node[i].r) {
R++;
ans = (ans + C(L, R)) % mod;
}
while(R > node[i].r) {
ans = (ans - C(L, R) % mod) + mod;
ans %= mod;
R--;
}
res[node[i].id] = ans;
}
for(int i=; i<=n; i++) printf("%I64d\n", res[i]);
return ;
}

HDU6333 Harvest of Apples (杭电多校4B)的更多相关文章

  1. 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)

    以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...

  2. 2018 Multi-University Training Contest 1 杭电多校第一场

    抱着可能杭电的多校1比牛客的多校1更恐怖的想法 看到三道签到题 幸福的都快哭出来了好吗 1001  Maximum Multiple(hdoj 6298) 链接:http://acm.hdu.edu. ...

  3. hdu6333 Harvest of Apples 离线+分块+组合数学(求组合数模板)

    Problem B. Harvest of Apples Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K ...

  4. 【魔改】莫队算法+组合数公式 杭电多校赛4 Problem B. Harvest of Apples

    http://acm.hdu.edu.cn/showproblem.php?pid=6333 莫队算法是一个离线区间分块瞎搞算法,只要满足:1.离线  2.可以O(1)从区间(L,R)更新到(L±1, ...

  5. 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)

    咕咕咕了太久  多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场…… 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组 ...

  6. 2018 Multi-University Training Contest 2 杭电多校第二场

    开始逐渐习惯被多校虐orz  菜是原罪 1004  Game    (hdoj 6312) 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6312 虽然披着 ...

  7. 2019杭电多校&CCPC网络赛&大一总结

    多校结束了, 网络赛结束了.发现自己还是太菜了,多校基本就是爆零和签到徘徊,第一次打这种高强度的比赛, 全英文,知识点又很广,充分暴露了自己菜的事实,发现数学还是很重要的.还是要多刷题,少玩游戏. 网 ...

  8. HDU 4941 Magical Forest(map映射+二分查找)杭电多校训练赛第七场1007

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 解题报告:给你一个n*m的矩阵,矩阵的一些方格中有水果,每个水果有一个能量值,现在有三种操作,第 ...

  9. HDU 4902 Nice boat 2014杭电多校训练赛第四场F题(线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 解题报告:输入一个序列,然后有q次操作,操作有两种,第一种是把区间 (l,r) 变成x,第二种是 ...

随机推荐

  1. 阿里云ECS服务器云监控(cloudmonitor)Go语言版本插件安装卸载与维护

    云监控Go语言版本插件安装_主机监控_用户指南_云监控-阿里云https://help.aliyun.com/document_detail/97929.html 云监控cloudmonitor 1. ...

  2. 10 Comparisons with adjectvies and nouns

    1 比较级用来比较两个词条之间的关系,比较级是通过在形容词后加 er 或者在形容词之前加 more 构成. 它的反义句是通过在形容词前加 less 或者 not as构成. Perfume sales ...

  3. tomcat启动的时候报错Failed to start component

    在idea中运行tomcat时,遇到异常,异常信息如下: 16-Jan-2018 16:33:37.325 信息 [localhost-startStop-1] org.apache.catalina ...

  4. js判断数组是否包含某个字符串变量的实例

    最近碰到一个这样的现象,后台返回的数据中,数组里面有一些有变量值,有一些没有变量值. 举个例子,比如后台返回的例子是这样的: var arr=[ { "status":" ...

  5. Laravel 的十八个最佳实践

    本文翻译改编自 Laravel 的十八个最佳实践 这篇文章并不是什么由 Laravel 改编的 SOLID 原则.模式等. 只是为了让你注意你在现实生活的 Laravel 项目中最常忽略的内容.   ...

  6. .Net中EF通用数据层小结

    增删改查: using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; u ...

  7. NIO和经典IO

    NIO未必更快,在Linux上使用Java6完成的测试中,多线程经典I/O设计胜出NIO30%左右 异步I/O强于经典I/O:服务器需要支持超大量的长期连接,比如10000个连接以上,不过各个客户端并 ...

  8. Plugin/Preset files are not allowed to export objects,webpack报错/babel报错的解决方法

    1.为什么会报错 ? 这里抱着错误是因为 babel 的版本冲突. 多是因为你的 babel 依赖包不兼容. 可以查看你的 package.json 的依赖列表 即有 babel 7.0 版本的( @ ...

  9. DAY07、字符编码和文件操作

    一.字符编码 1.什么是字符编码? 人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,              一定需要一个媒介,进行两种标识符的转化(两 ...

  10. python设计模式第十天【观察者模式】

    1.应用场景 (1)监听事件驱动程序中的外部事件 (2)监听某个对象的状态变化 (3)发布-订阅模型中,消息出现时通知邮件列表中的订阅者 2. 观察者模式UML图 3. 代码实现: #!/usr/bi ...