20181009noip HZ EZ两校联考sum(莫队,组合数学)
题面戳这里
思路:
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(莫队,组合数学)的更多相关文章
- 20181009noip HZ EZ 两校联考trade(优先队列,贪心)
题面戳这里 思路: 裸的,贪心... 考场上写了一个数据分治(70ptsDP,30pts线段树优化贪心,GG了后30分) 这道题其实很简单的 我们看图: 我们在A时刻买一个东西,在B时刻卖出去,我们可 ...
- 【赛时总结】NOIP2018-三校联考1024
◇NOIP三校联考-1024◇ 发现以前的博客写得似乎都很水……基本上都没什么阅读量QwQ 决定改过自新╰( ̄ω ̄o) 就从这篇博客开始吧~ 现场考得无地自容,看到题解才发现一些东西……(我第三题还没 ...
- [多校联考2019(Round 5 T3)]青青草原的表彰大会(dp+组合数学)
[多校联考2019(Round 5)]青青草原的表彰大会(dp+组合数学) 题面 青青草原上有n 只羊,他们聚集在包包大人的家里,举办一年一度的表彰大会,在这次的表彰大会中,包包大人让羊们按自己的贡献 ...
- 三校联考 Day3
三校联考 Day3 大水题 题目描述:给出一个圆及圆上的若干个点,问两个点间的最远距离. solution 按极角排序,按顺序枚举,显然距离最远的点是单调的,线性时间可解出答案. 大包子的束缚 题目描 ...
- [2019多校联考(Round 6 T3)]脱单计划 (费用流)
[2019多校联考(Round 6 T3)]脱单计划 (费用流) 题面 你是一家相亲机构的策划总监,在一次相亲活动中,有 n 个小区的若干男士和 n个小区的若干女士报名了这次活动,你需要将这些参与者两 ...
- [多校联考2019(Round 5 T1)] [ATCoder3912]Xor Tree(状压dp)
[多校联考2019(Round 5)] [ATCoder3912]Xor Tree(状压dp) 题面 给出一棵n个点的树,每条边有边权v,每次操作选中两个点,将这两个点之间的路径上的边权全部异或某个值 ...
- [多校联考2019(Round 5 T2)]蓝精灵的请求(二分图染色+背包)
[多校联考2019(Round 5)]蓝精灵的请求(二分图染色+背包) 题面 在山的那边海的那边住着 n 个蓝精灵,这 n 个蓝精灵之间有 m 对好友关系,现在蓝精灵们想要玩一个团队竞技游戏,需要分为 ...
- 【五校联考1day2】JZOJ2020年8月12日提高组T2 我想大声告诉你
[五校联考1day2]JZOJ2020年8月12日提高组T2 我想大声告诉你 题目 Description 因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一 ...
- 【五校联考1day2】JZOJ2020年8月12日提高组T1 对你的爱深不见底
[五校联考1day2]JZOJ2020年8月12日提高组T1 对你的爱深不见底 题目 Description 出乎意料的是,幸运E 的小R 居然赢了那个游戏.现在欣喜万分的小R 想要写一张明信片给小Y ...
随机推荐
- python学习(五)--打印错误信息
from urllib import request #打印错误信息 except Exceptionlist = [ "http://www.baidu11.com/", &qu ...
- java程序: 从kernel.ubuntu.com下载kernel - HttpURLConnection
用java实现从kernel.ubuntu.com下载内核的小工具 现在的最新的LTS版本是4.19,目前已经更新到4.19.13了. Kernel的更新通知里,经常有下面的陈述: 作为一个听劝的人, ...
- TypeScript 入门笔记
1.原始数据类型 JavaScript 的类型分为两种:原始数据类型和对象数据类型.原始数据类型包括布尔值.数值.字符串.null.undefined 以及 ES6 中的 Symbol. 前五种数据类 ...
- 超级简单的jQuery纯手写五星评分效果
超级简单的评分功能,分为四个步骤轻松搞定: 第一步: 引入jquery文件:这里我用百度CDN的jquery: <script src="http://apps.bdimg.com/l ...
- 使用cookie实现只出现一次的广告代码效果
我们上网经常会遇到第一次需要登录而之后不用再登录的网站的情况,其实是运用了Cookie 存储 web 页面的用户信息,Cookie 以名/值对形式存储,当浏览器从服务器上请求 web 页面时, 属于该 ...
- Hbase到Solr同步常用操作
Hbase到Solr同步常用操作 1. 整体流程 2. 常用操作 Hbase常用操作 Solr常用操作 hbase-index常用操作 3. 其他资料 Lily HBase Indexer使用整理 h ...
- k-近邻算法(kNN)
1.算法工作原理 存在一个训练样本集,我们知道样本集中的每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应特征进行比较,然后算法提取样本集中特征最相似的数据( ...
- dialog和dialogFragment的使用及常用问题
今天比较懒,只是列举了一些网址 弹窗之一:dialogFragment的使用 https://blog.csdn.net/sinat_31057219/article/details/76979246 ...
- Hadoop ->> Name node/Data node和Job tracker/Task tracker的区别
刚好看到关于Name node/Data node和Job tracker/Task tracker的解释,一开始有点混淆,以为说Job tracker必须运行在Name node上,他们俩有依赖或者 ...
- input type=number去掉上下箭头
<input type="number" ...> <style> input::-webkit-outer-spin-button, input::-we ...