hdu6333 Problem B. Harvest of Apples(组合数+莫队)
2024-10-07 13:24:56
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);
即:
所以可以离线用莫队算法
代码:
#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 ;
}
最新文章
- iOS 保持界面流畅的技巧 (转载)
- MINA系列学习-mina整体介绍
- chrome表单自动填充去掉input黄色背景解决方案
- 巧用section在cshtml写入layout中写入head信息 ASP.NET MVC
- HDU 4511 (AC自动机+状态压缩DP)
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-1
- WPF中ListBox的项ListBoxItem被选中的时候Background变化
- 二维树状数组——SuperBrother打鼹鼠(Vijos1512)
- Redis系统学习 一、基础知识
- IFeatureLayer
- Linux巩固记录(3) hadoop 2.7.4 环境搭建
- 浅谈python 复制(深拷贝,浅拷贝)
- RabbitMQ 学习开发笔记
- 记自己利用hexo和github搭建个人博客的过程
- affiliate的使用方式
- memcached 配置
- SuSE Linux Enterprise Server - 软件包下载地址
- eclipse显示代码行数
- MetaMask/safe-event-emitter
- Java happen-before
热门文章
- CentOS7系统局域网内配置本地yum源解决cannot find a valid baseurl for repo
- How to Add Memory, vCPU, Hard Disk to Linux KVM Virtual Machine
- 脚本_统计 Linux 进程相关数量信息
- Ubuntu16.04 启用root权限
- 【串线篇】spring boot日志框架
- TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片
- Github熟悉一
- php-redis 使用命令
- darknet-yolov3使用opencv3.4.8时,undefined reference &#39;imshow()&#39;、&#39;waitKey()&#39;、&#39;nameWindows()&#39;
- 持续优化云原生体验,阿里云在Serverless容器与多云上的探索