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. TP5框架whereor

    whereOr方法 Db::table('think_user') ->where('name','like','%thinkphp') ->whereOr('title','like', ...

  2. [ORA-28001: the password has expired]的处理

    http://irikintwtr.com/wordpress/?p=420 alter profile default limit password_life_time unlimited; alt ...

  3. 3.2 x86体系结构

    计算机组成 3 指令系统体系结构 3.2 x86体系结构 X86是商业上最为成功,影响力最大的一种体系结构.但从技术的角度看,它又存在着很多的问题,那我们就来一起分析X86这种体系结构的特点. 要探讨 ...

  4. Jersey 2.x 前言和约定的文本格式

    这是Jersey 2.x 的用户指南.我们极力将它能与我们新增的功能保持一致.当阅读本指南,作为补充,也请移步至Jersey API documentation查看 Jersey 的特性和 API. ...

  5. 『科学计算』可视化二元正态分布&3D科学可视化实战

    二元正态分布可视化本体 由于近来一直再看kaggle的入门书(sklearn入门手册的感觉233),感觉对机器学习的理解加深了不少(实际上就只是调包能力加强了),联想到假期在python科学计算上也算 ...

  6. n转m进制标准写法(必须记忆)

    #include <bits/stdc++.h> using namespace std; int main() { int n,m; cin >> n >> m; ...

  7. C#窗体控件简介ListBox

    ListBox 控件 ListBox 控件又称列表框,它显示一个项目列表供用户选择.在列表框中,用户 一次可以选择一项,也可以选择多项. 1.常用属性: (1) Items属性: 用于存放列表框中的列 ...

  8. 标准的EO验证提示错误不够完整,抛出自定义的异常。

    我们通常会在EO里面对某些数据进行验证,比如在邀请供应商注册的时候,ORACLE标准逻辑会验证被邀请的供应商是否已经存在. 其验证逻辑在 oracle.apps.pos.schema.server.S ...

  9. _Python定义方法

    def 定义一个方法 在项目编程中,我们往往要做很多重复的事,比如一个排序的功能(当然Python中内置排序的方法),在编程中,我们肯定是会多次用到这个功能的,如果我们每次都在要用这个功能时,都去写一 ...

  10. ECC算法整理纪要

    初始ECC算法 1.用户A 密钥生成 (1):用随机数发生器产生随机数k∈[1,n-1]: (2):计算椭圆曲线点PA=[k]G,为公钥,k为用户A私钥: 2. 用户B加密算法及流程 设需要发送的消息 ...