hdu6333 Problem B. Harvest of Apples

题目传送门

题意:

求(0,n)~(m,n)组合数之和

题解:

C(n,m)=C(n-1,m-1)+C(n-1,m)   
设 S(n,m)=C(n,0)+C(n,1)+C(n,2)+。。。+C(n,m)
然后将S(n,m) 通过 第一个公式 拆项
最后化简 变为 S(n,m)=2*S(n-1,m)-C(n-1,m);
即:
所以可以离线用莫队算法
参考博客:链接1链接2

代码:

#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll;
const int mod=1e9+;
const int N=1e5+; /********组合数模板*********/
ll pow_mod(ll a, ll b) {
ll res = 1ll; a %= mod;
while(b){
if(b & ) res = res * a % mod;
a = a * a % mod;
b >>= ;
} return res;
}
ll inv(ll a) { return pow_mod(a, mod-); }
ll F[N], Finv[N];//F是阶乘,Finv是逆元的阶乘
void init() {
F[] = Finv[] = 1ll;
for(int i = ; i < N; i ++){
F[i] = F[i-] * 1ll * (ll)i % mod;
Finv[i] = Finv[i-] * 1LL * inv(i) % mod;
}
} // O(n)预处理
ll C(ll n, ll m) {
if(m < || m > n) return ;
return F[n] * 1LL * Finv[n - m] % mod * Finv[m] % mod;
} // O(1)获得组合数C(n,m)
/**************************/ int block[N];
ll res[N];
struct mo
{
int n,m;
int id,block;
bool operator < (const mo &p) const{
if(block==p.block) return n<p.n;
else return block<p.block;
}
}s[N];
int main()
{
int T;
scanf("%d",&T);
int len=sqrt(N+0.5);
for(int i=;i<T;i++)
{
scanf("%d %d",&s[i].n,&s[i].m);
s[i].block=s[i].m/len;s[i].id=i;
}
sort(s,s+T);
ll ans=;
init();
int L=,R=;
for(int i=;i<T;i++)
{
int l=s[i].n,r=s[i].m;
while(L>l) ans=((ans+C(L-1LL,R))%mod*Finv[])%mod, L--;
while(L<l) ans=(*ans%mod-C(L,R)+mod)%mod, L++;
while(R<r) ans=(ans+C(L,R+))%mod, R++;
while(R>r) ans=(ans-C(L,R)+mod)%mod, R--;
res[s[i].id]=ans;
}
for(int i=;i<T;i++)
printf("%lld\n",res[i]);
return ;
}

最新文章

  1. iOS 保持界面流畅的技巧 (转载)
  2. MINA系列学习-mina整体介绍
  3. chrome表单自动填充去掉input黄色背景解决方案
  4. 巧用section在cshtml写入layout中写入head信息 ASP.NET MVC
  5. HDU 4511 (AC自动机+状态压缩DP)
  6. Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-1
  7. WPF中ListBox的项ListBoxItem被选中的时候Background变化
  8. 二维树状数组——SuperBrother打鼹鼠(Vijos1512)
  9. Redis系统学习 一、基础知识
  10. IFeatureLayer
  11. Linux巩固记录(3) hadoop 2.7.4 环境搭建
  12. 浅谈python 复制(深拷贝,浅拷贝)
  13. RabbitMQ 学习开发笔记
  14. 记自己利用hexo和github搭建个人博客的过程
  15. affiliate的使用方式
  16. memcached 配置
  17. SuSE Linux Enterprise Server - 软件包下载地址
  18. eclipse显示代码行数
  19. MetaMask/safe-event-emitter
  20. Java happen-before

热门文章

  1. CentOS7系统局域网内配置本地yum源解决cannot find a valid baseurl for repo
  2. How to Add Memory, vCPU, Hard Disk to Linux KVM Virtual Machine
  3. 脚本_统计 Linux 进程相关数量信息
  4. Ubuntu16.04 启用root权限
  5. 【串线篇】spring boot日志框架
  6. TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片
  7. Github熟悉一
  8. php-redis 使用命令
  9. darknet-yolov3使用opencv3.4.8时,undefined reference &#39;imshow()&#39;、&#39;waitKey()&#39;、&#39;nameWindows()&#39;
  10. 持续优化云原生体验,阿里云在Serverless容器与多云上的探索