hdu5230
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的更多相关文章
随机推荐
- 将数组划分成连续子序列 Split Array into Consecutive Subsequences
2018-08-04 20:47:43 问题描述: 问题描述: 本题需要的是将一个数组划分成子序列,保证每个子序列是连续的,并且长度要大于等于3. 解题思路是使用贪心算法,首先对数组中的数字进行计数, ...
- 20170528xlVBA凑数一例
Public Sub MakeUp() Dim Sht As Worksheet Set Sht = ThisWorkbook.Worksheets("设置") Dim Total ...
- Idea改项目名
1.点开.idea文件夹,找到 modules.xml,更改里面的项目名 2.根目录下对应的.iml文件 3.右击 pom.xml 文件,选择最下面的 “ Add as maven build fil ...
- 『Scrapy』爬取腾讯招聘网站
分析爬取对象 初始网址, http://hr.tencent.com/position.php?@start=0&start=0#a (可选)由于含有多页数据,我们可以查看一下这些网址有什么相 ...
- 巧妙利用SVN 实现复制需要部署的文件。
http://blog.csdn.net/xiaoding133/article/details/39252357 http://blog.csdn.net/sinat_29173167/articl ...
- quartz---的jobDateil,Trigger的存值
quartz---的jobDateil,Trigger的存值 package com.imooc.demo.helloQuartz; import java.text.SimpleDateFormat ...
- springmvc事务回滚失效
转载:http://blog.csdn.net/z69183787/article/details/37819831 前文提到,最新换了框架,新项目用SpringMVC + Spring JdbcTe ...
- 深入理解MyBatis中的一级缓存与二级缓存
http://blog.csdn.net/weixin_36380516/article/details/73194758 先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓 ...
- Awk 从入门到放弃(5)– Awk模式(Pattern)之一
转:http://www.zsythink.net/archives/1426
- onmouseover和onmouseout的bug
脑子不好用了,一点东西要看几遍才能记住,学过的东西也要好几遍,悲哀. 习惯了jquery的hover,或者看过hover源码,或者是正美的<框架设计>,onmouseover和onmous ...