题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4403

一开始想了个 O(n) 的做法,不行啊...

O(n)想法是这样的:先考虑递推,设 f[i][j] 为在第 i 个位置选第 j 个数字;

设 m = r-l+1;

那么 f[i][j] = ∑(1<=k<=j) f[i-1][k],初值是 f[1][i] = 1 (1<=i<=m);

那么 ans = ∑(1<=i<=n , 1<=j<=m) f[i][j];

这个式子换个角度想,可以考虑初值的1贡献了几次;

对于每个 f[1][j],发现它到 i=2 的位置贡献了 m - j 次,之后每次递推贡献了 ∑(1<=i<=m-j) i 次,也就是 C(m-j , 2) 次;

所以 ans = ∑(1<=i<=m) (C(i,2) * (n-2) + i) + m,其中最后加的 m 是 ∑(1<=i<=m) f[1][i];

但这个时间复杂度是 O(n) 的,不行啊...

然后看了博客:https://blog.csdn.net/Clove_unique/article/details/68491395

竟然是如此简洁!我就是太关注那个序列,其实只需要选出几个数,之后再排序就好了啊!!

需要预处理阶乘逆元,而且别忘了处理 0 的逆元。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
int const mod=1e6+;
int T,n,l,r,m;
ll ans,fac[mod+],inv[mod+];
ll pw(ll a,ll b)
{
ll ret=;
for(;b;b>>=,a=(a*a)%mod)
if(b&)ret=(ret*a)%mod;
return ret;
}
void init()
{
fac[]=;
for(int i=;i<mod;i++) fac[i]=(fac[i-]*i)%mod;
inv[mod-]=pw(fac[mod-],mod-);//不能求 inv[mod]
for(int i=mod-;i>=;i--) inv[i]=(inv[i+]*(i+))%mod;//要处理出0的逆元!
}
ll C(int n,int m)
{
if(n<m)return ;
// ll a=1,b=1; m=min(m,n-m);
// for(int i=n-m+1;i<=n;i++)a=(a*i)%mod;
// for(int i=1;i<=m;i++)b=(b*i)%mod;
// return (a*pw(b,mod-2))%mod;
return ((fac[n]*inv[m])%mod*inv[n-m])%mod;
}
ll Lucas(ll n,ll m)
{
if(m==)return ;
return (C(n%mod,m%mod)*Lucas(n/mod,m/mod))%mod;
}
int main()
{
init();
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&l,&r); m=r-l+;
ll ans=Lucas((ll)n+m,m)-;
printf("%lld\n",(ans%mod+mod)%mod);//
}
return ;
}

最新文章

  1. BZOJ1114 : [POI2008]鲁滨逊逃生Rob
  2. HTML5手机APP开发入门(2)
  3. 【python cookbook】【数据结构与算法】14.对不原生支持比较操作的对象排序
  4. win7远程桌面连接
  5. HDU 3757 Evacuation Plan DP
  6. VC depends使用说明
  7. [转]SVN的trunk branch tag
  8. hostname、uname、dmesg、fdisk
  9. myeclipse修改内存
  10. mvc 微软票据验证
  11. This function or variable may be unsafe. Consider using scanf_s instead.
  12. .Net下一个Winform方案可以让MessageBox.Show它显示在父窗口的中间
  13. 第一百零六节,JavaScript变量作用域及内存
  14. mvp架构解析
  15. C#字符串格式化(摘抄的,留下来用用)
  16. 一起学Python——数据类型详解
  17. HttpWebRequest请求Https协议的WebApi
  18. React 与 React Native 底层共识:React 是什么
  19. MT【260】单调函数
  20. 前端 ----jQuery的属性操作

热门文章

  1. PHP封装数据库
  2. uploadify的简单使用
  3. poj - 3254 - Corn Fields (状态压缩)
  4. DayLight Saving Light(HDU6010)
  5. Python学习第二阶段Day2,模块subprocess、 logging、re
  6. 简述Centos系统启动流程
  7. ubuntu下手动配置apache2.4.12
  8. Java 十二周总结
  9. Vuex实践小记
  10. c++行事准则