bc41第三题:

由 1 ~ n-1 这 n-1 个数组成 l - c 到 r - c 闭区间内的数共有多少种组合方法;

据称本来应该也比较简单吧,xiaoxin说了个五边形数,然后纷纷找了五边形数的模板,虽然并没有来得及AC,赛后交了也过了,这个东西还是要研究一下的昂,总之就是对于某个数n,用1~n组成n,每个数可以用有限多次,有多少种组合方法,本题则是只能用一次,算区间和。这样 n 只是个幌子,因为 r - c 小于等于 n - 1,然后用前缀和预处理,o(1)输出就行。

但是据说其实就是 dp 就能做,毕竟我太鱼了恩。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm> using namespace std; typedef long long LL;
const int Maxn=;
const LL MOD=;
LL Q[Maxn],P[Maxn];
LL num[Maxn];
LL GetQ(LL x)
{
LL ans=(LL)x*x*-x;
return (ans/)%MOD;
}
void _init()
{
Q[]=;
for(int i=;i<Maxn;i++)
{
if(i&) Q[i]=GetQ(i/+);
else Q[i]=GetQ(i/*(-));
}
P[]=P[]=;
for(int i=;i<Maxn;i++)
{
for(int j=;;j++)
{
if(Q[j]>i) break;
int t=j;
if(t&) t=t/+;
else t=t/;
if(t&)
P[i]=(P[i]+P[i-Q[j]]);
else
P[i]=(P[i]-P[i-Q[j]]);
if(P[i]>=MOD) P[i]%=MOD;
if(P[i]<) P[i]+=MOD;
}
}
}
LL solved(LL n,LL k)
{
LL ans=;
for(int i=;;i++)
{
if(Q[i]*k>n) break;
int t=i;
if(t&) t=t/+;
else t=t/;
if(t&) ans=(ans-P[n-Q[i]*k]);
else ans=(ans+P[n-Q[i]*k]);
if(ans>=MOD) ans%=MOD;
if(ans<) ans+=MOD;
}
return ans;
} void init()
{
_init();
LL k=;
num[]=;
for(int i=;i<=;i++){
num[i]=num[i-]+solved(i,k);
}
} int main(){
init();
int T;
while(scanf("%d",&T)!=EOF){
while(T--){
int n,c,l,r;
scanf("%d%d%d%d",&n,&c,&l,&r);
l-=c;
r-=c;
if(l==)printf("%lld\n",num[r]%MOD);
else printf("%lld\n",(num[r]-num[l-])%MOD);
}
}
return ;
}

hdu5230的更多相关文章

随机推荐

  1. Lua面向对象 --- 单例

    GameManager.lua: --单例模式是利用一个全局表来实现的 GameManager = {} Manager = {__index = GameManager} function Game ...

  2. Python 爬虫-获得大学排名

    2017-07-29 23:20:24 主要技术路线:requests+bs4+格式化输出 import requests from bs4 import BeautifulSoup url = 'h ...

  3. English trip -- VC(情景课)3 C Do you have a sister?(maple verstion)

    xu言: 温故而知新,可以为师矣.不要小瞧重复的东西,不同的老师,不同的角度,不同的方法.你就会掌握不同的知识~ Review what you have learned and get someth ...

  4. IntelliJ IDEA 进行多线程调试

      idea的断点有不同的模式,只有当Thread模式下才能调试多线程   断点设置步骤: 1.在断点上右键 2.选择Thread,然后点Done(建议选择Thread后点击make default把 ...

  5. Confluence 6 嵌套用户组的示例

    示例 1 : 用是一个子用户组成员 想象在你的目录服务器中,存在下面 2 个用户组: staff marketing 成员: marketing 用户组是  staff 的成员. 用户 jsmith ...

  6. 使用与不使用@RequestBody注解的区别

    1. 如果使用@RequestBody接受页面参数: public Map<String,Object> insertBudget(@ApiParam(required = true,na ...

  7. 秒杀多线程第七篇 经典线程同步 互斥量Mutex

    本文转载于:http://blog.csdn.net/morewindows/article/details/7470936 前面介绍了关键段CS.事件Event在经典线程同步问题中的使用.本篇介绍用 ...

  8. 基础最短路(模板 spfa)

    Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还 ...

  9. spring cloud学习(七)Spring Cloud Config(续)

    Spring Cloud Config(续) 个人参考项目 个人博客 : https://zggdczfr.cn/ 个人参考项目 : (整合到上一个案例中)https://github.com/Fun ...

  10. httpclient cookie保持会话

    COOKIE保持回话 httpclient4.x自带维护回话的功能,只要使用同一个httpclient且未关闭连接,就可以使用相同的回话来访问其他要求登陆验证的服务. 如果需要使用HttpClient ...