题面戳这里

思路:

noip考莫队???!!!

考场上死活没往这方面想啊!!!数据分治忘写endl50pts滚粗了

这里每个询问都有n,m两个参数

我们可以把它看做常规莫队中的l和r

然后利用组合数的可递推性质就好了

相信改变m大家都会写,n呢?

看图:

我们发现,$S_n^m = S_{n-1}^m \times 2 - C_n^{m+1} + C_{n-1}^{m+1}$

(因为杨辉三角的性质)

所以n也可以递推

套个莫队就好了

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#define rii register int i
#define rij register int j
#define int long long
const int p=1e9+;
using namespace std;
struct que{
int n,m,ans,bh;
}x[];
int ny[],jc[],jcny[],q,sy[],nn,nm,ans;
void qny()
{
ny[]=;
ny[]=;
for(rii=;i<=;i++)
{
ny[i]=(p-p/i)*ny[p%i]%p;
}
}
void jic()
{
jcny[]=;
jc[]=;
jcny[]=;
for(rii=;i<=;i++)
{
jc[i]=jc[i-]*i;
jc[i]%=p;
jcny[i]=jcny[i-]*ny[i];
jcny[i]%=p;
}
}
void ycl()
{
qny();
jic();
}
bool cmp1(que lk,que kl)
{
if(sy[lk.n]==sy[kl.n])
{
return lk.m<kl.m;
}
return lk.n<kl.n;
}
bool cmp2(que lk,que kl)
{
return lk.bh<kl.bh;
}
int c(int n,int m)
{
int kkk=jcny[m];
kkk*=jc[n];
kkk%=p;
kkk*=jcny[n-m];
kkk%=p;
return kkk;
}
void cn(int zl)
{
if(zl==)
{
ans*=;
ans-=c(nn+,nm+);
ans+=c(nn,nm+);
ans+=p;
ans%=p;
}
if(zl==-)
{
ans+=c(nn,nm+);
ans-=c(nn-,nm+);
ans+=p;
ans%=p;
ans*=ny[];
ans%=p;
}
}
void cm(int zl)
{
if(zl==)
{
ans+=c(nn,nm+);
}
else
{
ans-=c(nn,nm);
ans+=p;
}
ans%=p;
}
signed main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
ycl();
scanf("%lld",&q);
scanf("%lld",&q);
int len=;
for(rii=;i<=;i++)
{
sy[i]=i/len+;
}
for(rii=;i<=q;i++)
{
scanf("%lld%lld",&x[i].n,&x[i].m);
x[i].bh=i;
}
sort(x+,x+q+,cmp1);
nn=,nm=,ans=;
for(rii=;i<=q;i++)
{
if(x[i].m<nn)
{
while(nm>x[i].m)
{
cm(-);
nm--;
}
while(nm<x[i].m)
{
cm();
nm++;
}
while(nn<x[i].n)
{
cn();
nn++;
}
while(nn>x[i].n)
{
cn(-);
nn--;
}
}
while(nn<x[i].n)
{
cn();
nn++;
}
while(nn>x[i].n)
{
cn(-);
nn--;
}
while(nm>x[i].m)
{
cm(-);
nm--;
}
while(nm<x[i].m)
{
cm();
nm++;
}
x[i].ans=ans;
}
sort(x+,x+q+,cmp2);
for(rii=;i<=q;i++)
{
printf("%lld\n",x[i].ans);
}
}

20181009noip HZ EZ两校联考sum(莫队,组合数学)的更多相关文章

  1. 20181009noip HZ EZ 两校联考trade(优先队列,贪心)

    题面戳这里 思路: 裸的,贪心... 考场上写了一个数据分治(70ptsDP,30pts线段树优化贪心,GG了后30分) 这道题其实很简单的 我们看图: 我们在A时刻买一个东西,在B时刻卖出去,我们可 ...

  2. 【赛时总结】NOIP2018-三校联考1024

    ◇NOIP三校联考-1024◇ 发现以前的博客写得似乎都很水……基本上都没什么阅读量QwQ 决定改过自新╰( ̄ω ̄o) 就从这篇博客开始吧~ 现场考得无地自容,看到题解才发现一些东西……(我第三题还没 ...

  3. [多校联考2019(Round 5 T3)]青青草原的表彰大会(dp+组合数学)

    [多校联考2019(Round 5)]青青草原的表彰大会(dp+组合数学) 题面 青青草原上有n 只羊,他们聚集在包包大人的家里,举办一年一度的表彰大会,在这次的表彰大会中,包包大人让羊们按自己的贡献 ...

  4. 三校联考 Day3

    三校联考 Day3 大水题 题目描述:给出一个圆及圆上的若干个点,问两个点间的最远距离. solution 按极角排序,按顺序枚举,显然距离最远的点是单调的,线性时间可解出答案. 大包子的束缚 题目描 ...

  5. [2019多校联考(Round 6 T3)]脱单计划 (费用流)

    [2019多校联考(Round 6 T3)]脱单计划 (费用流) 题面 你是一家相亲机构的策划总监,在一次相亲活动中,有 n 个小区的若干男士和 n个小区的若干女士报名了这次活动,你需要将这些参与者两 ...

  6. [多校联考2019(Round 5 T1)] [ATCoder3912]Xor Tree(状压dp)

    [多校联考2019(Round 5)] [ATCoder3912]Xor Tree(状压dp) 题面 给出一棵n个点的树,每条边有边权v,每次操作选中两个点,将这两个点之间的路径上的边权全部异或某个值 ...

  7. [多校联考2019(Round 5 T2)]蓝精灵的请求(二分图染色+背包)

    [多校联考2019(Round 5)]蓝精灵的请求(二分图染色+背包) 题面 在山的那边海的那边住着 n 个蓝精灵,这 n 个蓝精灵之间有 m 对好友关系,现在蓝精灵们想要玩一个团队竞技游戏,需要分为 ...

  8. 【五校联考1day2】JZOJ2020年8月12日提高组T2 我想大声告诉你

    [五校联考1day2]JZOJ2020年8月12日提高组T2 我想大声告诉你 题目 Description 因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一 ...

  9. 【五校联考1day2】JZOJ2020年8月12日提高组T1 对你的爱深不见底

    [五校联考1day2]JZOJ2020年8月12日提高组T1 对你的爱深不见底 题目 Description 出乎意料的是,幸运E 的小R 居然赢了那个游戏.现在欣喜万分的小R 想要写一张明信片给小Y ...

随机推荐

  1. Log4Net 之初体验

    今天试了一下关于日志的一个插件——Log4Net 关于这个插件就不过多描述了,有很多人用,也挺好用比较方便,所以在此记录下使用过程. 一.建一个mvc 空网站 名字叫 Log4NetTest 二.下载 ...

  2. Java 的版本历史与特性

    Java SE 8[2014-03-14发行] Lambda表达式 Pipelines和Streams Date和Time API Default方法 Type注解 Nashhorn JavaScri ...

  3. 理解JavaScript作用域

    这是一篇译文,这里贴上译文地址:http://www.zcfy.cc/article/understanding-scope-in-javascript-8213-scotch-4075.html 这 ...

  4. mysql什么情况下会触发表锁

    锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数 ...

  5. Android 屏幕录制

    自己实现了Android的屏幕录制App. 用了MediaProjection类来作为源,MediaRecoder来捕捉,编码转换为本地视频. 效果图: 主要是这段代码开始录像: startActiv ...

  6. 在linux环境下搭建java web测试环境(非常详细!)

    一.项目必备软件及基本思路 项目必备:虚拟机:VMware Workstation (已安装linux的 CentOS6.5版本) 项目:java web项目 (必须在本地部署编译后选择项目的webR ...

  7. Mysql 服务无法启动解决办法

    1.我使用的是MySQL-5.7.10-winx64 版本,在安装后启动服务时出现 “服务无法启动”错误 2.解决办法为删除安装目录中的data文件,然后打开cmd调到自己的安装目录下输入mysqld ...

  8. Angular js 过滤器 笔记(转自菜鸟教程)

    1.uppercase,lowercase 大小写转换 {{ "lower cap string" | uppercase }} // 结果:LOWER CAP STRING {{ ...

  9. babel 的一些记录

    babel 的作用是将高版本的代码转换成低版本的可支持的代码: 过程是 读取 source code 转换为语法树 -> 经过处理 -> 转换为 code: babel有preset和pl ...

  10. tomcat、Apache服务器外网无法访问80和8080端口,其他端口可以访问

    tomcat.Apache服务器外网无法访问80和8080端口,其他端口都可以访问,很明显地看出这是网络运营商的问题,他们把80和8080端口对外访问屏蔽了. 解释:这两个端口是常用的HTTP协议端口 ...