时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
 64bit IO Format: %lld
题目描述
 
n个不同的滑稽果中,每个滑稽果可取可不取,从所有方案数中选取一种,求选取的方案中滑稽果个数不超过m的概率。(对109+7取模)
输入描述:
第一行一个正整数T( T <= 10^5 )随后T行每行两个整数n,m ( 0 < m <= n <= 10^5 )
输出描述:
T行,每行一个整数表示答案。
示例1
 
输入
复制
2
5 2
5 1
 
输出
复制
500000004
687500005
 
解题思路:很明显总方案数为2n种,而合法的方案数为C(n,0)+C(n,1)+……+C(n,m)种
因为有t组询问,如果每次暴力求,必然超时。
我们令S(n,m)=C(n,0)+C(n,1)+……+C(n,m),答案就是S(n,m)/2n
既然暴力超时,我们考虑离线的做法,我们会很自然想到莫队,但是要用莫队,我们必须要满足在在O(1)的时间下得到[L,R-1]和[L,R+1]和[L-1,R]和[L+1,R]的答案.
首先来看m的变化,很简单S(n,m)=S (n,m-1)+C(n,m)
然后来看n的变化,由于C(a,b)=C(a-1,b)+C(a-1,b-1),所以我们可以得到S(n,m)=2S(n-1,m)-C(n-1,m)
然后直接上莫队就好了。
 
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+;
const int N=1e5+;
int n,m,pos[N];
long long re[N],inv[N],fac[N];
struct node{
int l,r,id;
}Q[N];
ll Ans=,ans[N];
int L=,R=;
ll qpow(ll a,ll b){
ll res=;
while(b){
if(b&) res=res*a%mod;
b>>=;
a=a*a%mod;
}
return res;
}
bool cmp(node x,node y){
if(pos[x.l]==pos[y.l]) return pos[x.r]<pos[y.r];
return pos[x.l]<pos[y.l];
}
void init(int n){
re[] = inv[] = fac[] = ;
for(int i = ;i <= n;++i) fac[i] = fac[i-] * i % mod;
for(int i = ;i <= n;++i) inv[i] = (mod-mod/i)*inv[mod%i] % mod;
for(int i = ;i <= n;++i) re[i] = re[i-] * inv[i] % mod;
}
long long C(int a,int b){
if(a < ||b>a) return ;
return fac[a]*re[b]%mod*re[a-b]%mod;
}
void addL(int l,int r){
Ans=(Ans+C(r,l))%mod;
}
void delL(int l,int r){
Ans=(Ans-C(r,l)+mod)%mod;
}
void addR(int l,int r){
Ans=(*Ans-C(r-,l)+mod)%mod;
}
void delR(int l,int r){
Ans=(Ans+C(r-,l))%mod*inv[]%mod;
}
int main(){
init();
int t;
scanf("%d",&t);
int sz=sqrt();
for(int i=;i<=;i++) pos[i]=(i-)/sz+;
for(int i=;i<=t;i++){
scanf("%d%d",&Q[i].r,&Q[i].l);
Q[i].id=i;
}
sort(Q+,Q+t+,cmp);
for(int i=;i<=t;i++){
while(L<Q[i].l){
L++;
addL(L,R);
}
while(L>Q[i].l){
delL(L,R);
L--;
}
while(R<Q[i].r){
R++;
addR(L,R);
}
while(R>Q[i].r){
delR(L,R);
R--;
}
ans[Q[i].id]=Ans*qpow(qpow(,R),mod-)%mod;
}
for(int i=;i<=t;i++)
printf("%lld\n",ans[i]);
return ;
}

吉首大学2019年程序设计竞赛(重现赛)I 滑稽树上滑稽果 (莫队+逆元打表)的更多相关文章

  1. 吉首大学2019年程序设计竞赛(重现赛)D - 数列求和(嘤雄难度)

    链接:https://ac.nowcoder.com/acm/contest/992/D $a_{i}=\dfrac {3a_{i-1}-a_{i-2}}{2}+i+1$ 移项再化一下 $a_{i}- ...

  2. 吉首大学2019年程序设计竞赛(重现赛)- A SARS病毒 (矩阵,欧拉降幂)

    题目链接:https://ac.nowcoder.com/acm/contest/992/A 题意:求出长度为n的字符串个数,字符串由A.C.G.T组成,其中A和C必须成对出现. 思路:我们规定:   ...

  3. 吉首大学2019年程序设计竞赛(重现赛)-K(线段树)

    题目链接:https://ac.nowcoder.com/acm/contest/992/K 题意:给一个大小为1e5的数组,由0 1组成,有两种操作,包括区间修改,将一段区间内的0换成1,1换成0; ...

  4. 吉首大学2019年程序设计竞赛(重现赛)-J(树形DP)

    题目链接:https://ac.nowcoder.com/acm/contest/992/J 题意:题意很清晰,就是求任意两点距离的和,结果对1e9+7取模. 思路:裸的树形DP题,一条边的贡献值=这 ...

  5. 吉首大学2019年程序设计竞赛(重现赛) J 滑稽树下你和我 (递归)

    链接:https://ac.nowcoder.com/acm/contest/992/J来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...

  6. 吉首大学2019年程序设计竞赛(重现赛) B 干物妹小埋

    链接:https://ac.nowcoder.com/acm/contest/992/B来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...

  7. 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛 G - 彩虹岛套娃

    题目描述 俄罗斯套娃是俄罗斯特产的木制玩具,一般由多个一样图案的空心木娃娃一个套一个组成,最多可达十多个,通常为圆柱形,底部平坦可以直立.颜色有红色,蓝色,绿色,紫色等.最普通的图案是一个穿着俄罗斯民 ...

  8. 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛 H - 圣诞节糖果

    题目描述 圣诞节临近,彩虹岛的黑心商人

  9. 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛 F - 打铁的箱子

    题目描述 作为彩虹岛上最擅长打铁的人,

随机推荐

  1. Nginx 在 Linux 下安装与搭建集群

    搭建集群图例 集群搭建图如下,为了简单一点,使用一个Nginx服务器+两个Tomcat服务器,省略数据库部分: 环境说明 Linux 为 CentOS 7.2 发行版 + Java jdk 1.8 + ...

  2. es之java插入优化(批量插入)

    插入文档操作的一种优化,因为每次插入单条文档,都会向es中发送请求.然后es执行在返回结果: 如果有大批量的文档数据需要插入,这个时候单挑插入操作显然是不合理的: 之前学习的命令行批量执行方式: PO ...

  3. [CSP-S模拟测试]:ants(回滚莫队)

    题目描述 然而贪玩的$dirty$又开始了他的第三个游戏. $dirty$抓来了$n$只蚂蚁,并且赋予每只蚂蚁不同的编号,编号从$1$到$n$.最开始,它们按某个顺序排成一列.现在$dirty$想要进 ...

  4. 10 Django与Ajax

    知识预览 1. Ajax 2. 文件上传 Ajax Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用J ...

  5. cookie格式化

    #coding=utf- import requests url = 'http://www.baidu.com' f=open(r'cookies.txt','r') cookies={} for ...

  6. 词频分析 评论标签 nltp APP-分析买家评论的评分-高频词:二维关系

    0-定评论结果:好评.差评,1星.4星,二元化为“积极.消极”,取一元的数据为样本 1-得到词频结果:如手机类的“积极样本”得到前10的高频词:运行(run running ran).内存(memor ...

  7. flex 强制垃圾回收

    java和flash的垃圾回收都是一个比较热门的话题,今天我也用一个例子来测试下flash的强制垃圾回收.主要用到的而一个类是LocalConnection. 在Flash player的debug版 ...

  8. clientdataset 读取excel 如果excel 文件不存在的时候 相应的gird 会不显示数据, 鼠标掠过 gird 格子 才会显示数据。 这是一个bug 哈哈

    clientdataset 读取excel   如果excel 文件不存在的时候   相应的gird 会不显示数据, 鼠标掠过 gird 格子 才会显示数据.   这是一个bug 哈哈

  9. 【AndroidFramework】ATV9遥控器红外模式下,机顶盒在假待机阶段会响应遥控器语音键

    [问题描述] 测试部反馈,红外模式下,按power键进入假待机,按红外语音键会唤醒. 背景交代:红外语言键是我们自定义的按键,键值225.在红外模式下按会弹提示框"没连蓝牙,请连蓝牙使用语音 ...

  10. ETROBOT——审题

    参加了比赛,但是总要理解比赛相关的东西,发现以前瞎写的东西有人看,并且还有挺多人看的,所以打算继续在这里面,做记录. 源: http://www.etrobo.jp/2018/gaiyou/intro ...