2018.09.09 bzoj4403: 序列统计(Lucas定理)
传送门
感觉单调不降序列什么的不好做啊。
于是我们序列中下标为i的元素的值加上i,这样就构成了一个单调递增的序列。
问题就变成了:
求出构造长度分别为1 ~ n且每个元素的值在l+1 ~ r+n之间的单调递增的序列的总方案数。
那么对于一个长度为i的序列,构造出的方案数显然就是(r−l+ii)=(r−l+ir−l)\binom {r-l+i} {i}=\binom {r-l+i} {r-l}(ir−l+i)=(r−lr−l+i)
所以答案就是:
∑i=1n(r−l+ir−l)\sum _{i=1} ^n \binom {r-l+i} {r-l}∑i=1n(r−lr−l+i)
<=>
(∑i=1n(r−l+ir−l))+(r−l+1r−l+1)−1(\sum _{i=1} ^n \binom {r-l+i} {r-l})+\binom {r-l+1} {r-l+1} -1(∑i=1n(r−lr−l+i))+(r−l+1r−l+1)−1
<=>
(∑i=2n(r−l+ir−l))+(r−l+2r−l+1)−1(\sum _{i=2} ^n \binom {r-l+i} {r-l})+\binom {r-l+2} {r-l+1} -1(∑i=2n(r−lr−l+i))+(r−l+1r−l+2)−1
<=>
((r−l+nr−l))+(r−l+nr−l+1)−1(\binom {r-l+n} {r-l})+\binom {r-l+n} {r-l+1} -1((r−lr−l+n))+(r−l+1r−l+n)−1
<=>
((r−l+nr−l))+(r−l+nr−l+1)−1(\binom {r-l+n} {r-l})+\binom {r-l+n} {r-l+1} -1((r−lr−l+n))+(r−l+1r−l+n)−1
<=>
(r−l+n+1r−l+1)−1\binom {r-l+n+1} {r-l+1}-1(r−l+1r−l+n+1)−1
然后就可以上lucas了
代码:
#include<bits/stdc++.h>
#define mod 1000003
#define ll long long
using namespace std;
int T_T;
ll n,l,r,fac[mod+5],ifac[mod+5];
inline ll lucas(ll a,ll b){
if(a<b)return 0;
if(a<mod&&b<mod)return fac[a]*ifac[b]%mod*ifac[a-b]%mod;
return lucas(a%mod,b%mod)*lucas(a/mod,b/mod)%mod;
}
int main(){
scanf("%d",&T_T),fac[0]=1,ifac[1]=ifac[0]=1;
for(ll i=1;i<mod;++i)fac[i]=fac[i-1]*i%mod;
for(ll i=2;i<mod;++i)ifac[i]=(mod-mod/i)*ifac[mod%i]%mod;
for(ll i=2;i<mod;++i)(ifac[i]*=ifac[i-1])%=mod;
while(T_T--)scanf("%lld%lld%lld",&n,&l,&r),printf("%lld\n",(lucas(n+r-l+1,r-l+1)+mod-1)%mod);
return 0;
}
2018.09.09 bzoj4403: 序列统计(Lucas定理)的更多相关文章
- 【BZOJ4403】序列统计 Lucas定理
[BZOJ4403]序列统计 Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第 ...
- Bzoj 4403: 序列统计 Lucas定理,组合数学,数论
4403: 序列统计 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 328 Solved: 162[Submit][Status][Discuss] ...
- BZOJ4403 序列统计—Lucas你好
绝对是全网写的最详细的一篇题解 题目:序列统计 代码难度:简单 思维难度:提高+-省选 讲下题面:给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案 ...
- bzoj 4403 序列统计 卢卡斯定理
4403:序列统计 Time Limit: 3 Sec Memory Limit: 128 MB Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调 ...
- bzoj4403: 序列统计
我们很容易发现答案是C(R-L+N+1,N)-1 然后用一下lucas定理就行了 #include <iostream> #include <cstdio> #include ...
- BZOJ4403: 序列统计【lucas定理+组合数学】
Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组 ...
- 2018.09.14 bzoj2982: combination(Lucas定理)
传送门 貌似就是lucas的板子题啊. 练一练手感觉挺舒服的^_^ 代码: #include<bits/stdc++.h> #define mod 10007 #define ll lon ...
- bzoj4403 序列统计——组合数学
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4403 一开始想了个 O(n) 的做法,不行啊... O(n)想法是这样的:先考虑递推,设 f ...
- 【BZOJ4403】序列统计(Lucas定理,组合计数)
题意:给定三个正整数N.L和R, 统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量. 输出答案对10^6+3取模的结果. 对于100%的数据,1≤N,L,R≤10^9,1≤T≤100, ...
随机推荐
- leetcode150
public class Solution { public int EvalRPN(string[] tokens) { Stack<int> ST_NUM = new Stack< ...
- CentOS 7 Tomcat安装
官网: http://tomcat.apache.org/download-80.cgi 下 1.载zip包 >wget http://mirrors.hust.edu.cn/apache/to ...
- jquery 阻止冒泡事件和阻止默认事件
jQuery 冒泡和默认事件: <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
- Becoming inspired (2) - ASC 2017 March 25
Becoming inspired - part 2 @ Advanced Studio Classroom Vol: 2017 MARCH 25 7.Who was I like as a chil ...
- python-股票数据定向爬取
re.findall soup.find_all ---------Q---- for i in ***: ***可以是什么类型,主要是关心什么类型的不可以 ------------trackback ...
- TEXT 5 Stuff of dreams
TEXT 5 Stuff of dreams 梦想的精粹 Feb 16th 2006 | CORK AND LONDON From The Economist print edition (译者注:本 ...
- asp.net cors solution
I have a simple actionmethod, that returns some json. It runs on ajax.example.com. I need to access ...
- docker registry2
https://blog.csdn.net/mideagroup/article/details/52052618
- Linux就业技术指导(四):企业CDN缓存加速原理解密
1.1 CDN(网站加速) 1.1.1 什么是CDN CDN的全称Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和 ...
- Error: Cannot find a valid baseurl for repo: epel
修改一下/etc/yum.repos.d/epel.repo文件, enable=1改为enable=0