这题好没意思啊,怀疑拉不开区分度。

题意:求一个递增序列,每两个相邻数字之间的差值不超过m,最后一个值不能大于n。

分析:网上好多人用了差分,我没想到。然后YY了一发生成函数。

考虑构造生成函数G(x) = x+x2+...+xm.

我们的目标是求这个G(k-1)(x)的很多个前缀和。

具体来说是求什么呢?

这题的重点其实在于一个注意不到的细节:(k-1)*m<n。

这意味着,当第一项为1时,所有的答案一定被满足。

也就是说,当第一项为1时,对应的答案是G(k-1)(x)的所有项数之和。

实际上通过举例子,你会发现这样一个性质:[xi+k-1]G(k-1)(x) = [x(k-1)*m-i]G(k-1)(x) 其中i的范围自己想一下。

这个性质怎么证明呢:归纳

考虑将Gi(x)除以xi,然后乘以G(x)/x,然后把除的东西乘上。由于上一个具有这样的对称性,画图之后我们发现乘的时候是对称的,那么这个性质仍然满足。

通过我们对高斯的了解,我们知道他10岁的时候想到了1加到100的方法,他非常聪明,而我们只能照葫芦画瓢。

什么意思呢,我们考虑第一项为i的时候,在某个位置的时候出现了第一个不满足的序列。

然后从后往前,在某个位置出现了第一个满足的序列。

把两个匹配在一起,这样子我们得到了一个完整的序列,即(m)^(k-1).

众所周知,高斯是个很聪明的孩子,那么他用的方法很可能是将1到100翻倍然后两两配对,最后除以2。这个方法在这不好用。

我们不容易确认2在这个模数下有逆。

取而代之的方法是用类似1配99,2配98的方法。考虑多了一项怎么办。

不难发现的是,多出来的一项一定是配出来的结果的一半,不说明了。

做这个答案的时候一定要先留下一个m,将这个m除以2再乘进去。

代码:

 #include<bits/stdc++.h>
using namespace std; typedef long long ll; ll n,k,m,mod;
ll pw,maxx; ll fast_pow(int now,int p){
if(p == ) return ;
if(p == ) return now;
ll z = fast_pow(now,p/);
z *= z; z %= mod;
if(p & ) z*=now,z%=mod;
return z;
} int main(){
scanf("%lld%lld%lld%lld",&n,&k,&m,&mod);
maxx = (k-)*m;
if(k == ){printf("%lld",n);return;}
pw = fast_pow(m,k-);
ll fir = n-maxx+; // diyige youxiaci de
ll lst = n-(k-); // zuihouyige youxiacide
ll len = lst-fir+,multi = len/;
ll ans = ((multi+n-maxx)%mod)*pw; ans %= mod;
if(len & ){
pw = fast_pow(m,k-);
pw *= (m/);pw %= mod;
ans += pw;ans %= mod;\
}
printf("%lld",ans);
return ;
}

bzoj3142 luogu3228 HNOI2013 数列的更多相关文章

  1. 【BZOJ3142】[HNOI2013]数列(组合计数)

    [BZOJ3142][HNOI2013]数列(组合计数) 题面 BZOJ 洛谷 题解 唯一考虑的就是把一段值给分配给\(k-1\)天,假设这\(k-1\)天分配好了,第\(i\)天是\(a_i\),假 ...

  2. 【BZOJ3142】[HNOI2013]数列

    [BZOJ3142][HNOI2013]数列 题面 洛谷 bzoj 题解 设第\(i\)天的股价为\(a_i\),记差分数组\(c_i=a_{i+1}-a_i\) 则 \[ Ans=\sum_{c_1 ...

  3. 【bzoj3142】[Hnoi2013]数列 数学

    题目描述 求满足 $1\le a_i\le n\ ,\ 1\le a_{i+1}-a_i\le m$ 的序列 $a_1...a_k$ 的个数模 $p$ 的值. 输入 只有一行用空格隔开的四个数:N.K ...

  4. [BZOJ3142][HNOI2013]数列(组合数学)

    3142: [Hnoi2013]数列 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1721  Solved: 854[Submit][Status][ ...

  5. [洛谷P3228] [HNOI2013]数列

    洛谷题目链接:[HNOI2013]数列 题目描述 小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察到: ...

  6. BZOJ3142 [Hnoi2013]数列

    Description 小 T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察 到:除第一天外每天的股价都 ...

  7. bzoj千题计划293:bzoj3142: [Hnoi2013]数列

    http://www.lydsy.com/JudgeOnline/problem.php?id=3142 如果已知数列的差分数列a[1]~a[k-1] 那么这种差分方式对答案的贡献为 N-Σ a[i] ...

  8. BZOJ3142 HNOI2013数列(组合数学)

    考虑差分序列.每个差分序列的贡献是n-差分序列的和,即枚举首项.将式子拆开即可得到n*mk-1-Σi*cnt(i),cnt(i)为i在所有差分序列中的出现次数之和.显然每一个数出现次数是相同的,所以c ...

  9. BZOJ3142 [Hnoi2013]数列 【组合数学】

    题目链接 BZOJ3142 题解 题意:选一个正整数和\(K - 1\)个\([1,M]\)中的数,使得总和小于等于\(N\),求方案数模\(P\) 题目中\(K(M - 1) < N\)的限制 ...

随机推荐

  1. Yaf框架的配置

    http://www.laruence.com/manual/yaf.ini.html //先看一下惠新宸鸟哥yaf官网的配置说明 我们可以在php.ini中定义开发环节配置项,把本地开发设置成dev ...

  2. C 语言中模板的几种实现方式

    简单宏定义实现 简单宏定义 - 方式一 这种方式将主要实现部分放在一个宏定义中,利用字符替换的方式实现不同 type 的运算,详细思路见代码: simple_macro_1.c #include &l ...

  3. linux 运维 nginx服务器

    nginx(web服务器) nginx是一个高性能的http和反向代理服务器,同时也是一个imap/pop3/smtp 代理服务器比apache简单官网:http://nginx.org nginx配 ...

  4. JavaScript操作符汇总

    操作符 JavaScript 有赋值.比较.算术.位.逻辑.字符串和特殊运算符.本章描述了操作符,以及关于操作符优先级的一些信息. 表 2.1 JavaScript 所有操作符简明列表. 表 2.1 ...

  5. 【前端】Vue2全家桶案例《看漫画》之七、webpack插件开发——自动替换服务器API-URL

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_app_7.html 项目github地址:https://github.com/shamoyuu/ ...

  6. Caffe、TensorFlow、MXnet三个开源库对比

    库名称 开发语言 支持接口 安装难度(ubuntu) 文档风格 示例 支持模型 上手难易 Caffe c++/cuda c++/python/matlab *** * *** CNN ** MXNet ...

  7. Jenkins构建Android项目持续集成之findbugs的使用

    Findbugs简介 关于findbugs的介绍,可以自行百度下,这里贴下百度百科的介绍.findbugs是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题 ...

  8. Hi3531支持2GByte内存

    型号为K4B4G1646B-HCKO 1.修改DDRC_RNKCFG 为 0x142 2.修改arch/arm/mach-godnet/include/mach/vmalloc.h 扩大 vmallo ...

  9. PHPmysqli的 预处理执行查询语句

    header( 'Content-Type:text/html;charset=utf-8 '); require 'prepareSrarment.php'; $mysqli=new mysqli( ...

  10. R语言︱大数据集下运行内存管理

    在实操时出现以下的问题: Error: cannot allocate vector of size 2.9GB 大神指导(http://bbs.pinggu.org/thread-3682816-1 ...