1259 整数划分 V2
设dp[n]为整数n的分割函数,由五边形定理得到:
dp[n] = dp[n-1] + dp[n-2] - dp[n-5] - dp[n-7]……
我们将其分为两部分计算
第一部分为 :( dp[n-1] - dp[n-5] …… ) 奇数项为加,偶数项为减,第j项括号内的值为 : n-(j*(3*j-1)/2)
第二部分为:(dp[n-2] - dp[n-7]……) 奇数项为加,偶数项为减,第j项括号内的值为 : n-(j*(3*j+1)/2)
如此递推便可求出n的分割函数 dp[n]
#include <iostream>
#include <cmath>
#include <string.h>
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
#define LL long long
#define MAXSIZE 1000005
#define INF 1e11 const LL mod=1e9+; LL dp[MAXSIZE]; LL Solve(int n)
{
dp[] = ;
for(int i=;i<=n;i++)
{
for(int j=;j*(*j-)/<=i;j++)
{
if(j&)
dp[i] = (dp[i] + dp[i-(j*(*j-)/)] + mod)%mod;
else
dp[i] = (dp[i] - dp[i-(j*(*j-)/)] + mod)%mod;
} for(int j=;j*(*j+)/<=i;j++)
{
if(j&)
dp[i] = (dp[i] + dp[i-(j*(*j+)/)] + mod)%mod;
else
dp[i] = (dp[i] - dp[i-(j*(*j+)/)] + mod)%mod;
}
}
return dp[n];
} int main()
{
int n;
scanf("%d",&n);
LL ans = Solve(n);
printf("%lld\n",ans);
return ;
}
1259 整数划分 V2的更多相关文章
- 【题解】整数划分 [51nod1201] 整数划分 V2 [51nod1259]
		[题解]整数划分 [51nod1201] 整数划分 V2 [51nod1259] 传送门:整数划分 \([51nod1201]\) 整数划分 \(V2\) \([51nod1259]\)** [题目描 ... 
- 51Nod-1259-整数划分 V2
		51Nod-1259-整数划分 V2 将N分为若干个整数的和,有多少种不同的划分方式,例如:n = 4,{4} {1,3} {2,2} {1,1,2} {1,1,1,1},共5种.由于数据较大,输出M ... 
- 51nod p1201 整数划分
		1201 整数划分 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2, ... 
- 2014北大研究生推免机试(校内)-复杂的整数划分(DP进阶)
		这是一道典型的整数划分题目,适合正在研究动态规划的同学练练手,但是和上一个随笔一样,我是在Coursera中评测通过的,没有找到适合的OJ有这一道题(找到的ACMer拜托告诉一声~),这道题考察得较全 ... 
- 整数划分 (区间DP)
		整数划分(四) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近 ... 
- nyoj 90 整数划分
		点击打开链接 整数划分 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 将正整数n表示成一系列正整数之和:n=n1+n2+-+nk, 其中n1≥n2≥-≥nk≥1,k≥ ... 
- 整数划分 Integer Partition(二)
		本文是整数划分的第二节,主要介绍整数划分的一些性质. 一 先来弥补一下上一篇文章的遗留问题:要求我们所取的 (n=m1+m2+...+mi )中 m1 m2 ... mi连续,比如5=1+4就不符合 ... 
- 整数划分 Integer Partition(一)
		话说今天百度面试,可能是由于我表现的不太好,面试官显得有点不耐烦,说话的语气也很具有嘲讽的意思,搞得我有点不爽.Whatever,面试中有问到整数划分问题,回答这个问题过程中被面试官搞的不胜其烦,最后 ... 
- 51nod1201 整数划分
		01背包显然超时.然后就是一道神dp了.dp[i][j]表示j个数组成i的方案数.O(nsqrt(n)) #include<cstdio> #include<cstring> ... 
随机推荐
- js或jQuery获取当前屏幕的各种高度
			Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ... 
- Going Home  POJ - 2195  (最小费用最大流)
			On a grid map there are n little men and n houses. In each unit time, every little man can move one ... 
- HTTP协议相关原理
			HTTP 的全称是 Hyper Text Transfer Protocol,中文名叫做超文本传输协议 HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证传送高效而准确地传送超文本 ... 
- (map string)Crazy Search  hdu1381
			Crazy Search Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ... 
- fiddler模拟返回
			先把正常的请求响应报文保存为文件,操作方法为选中对应请求>右键> save >reponse>entire response 点击改请求,点击右侧autoresponder,点 ... 
- BashOnWindow安装mysql
			1.下载mysql 服务器和客户端 sudo apt-get install mysql-server mysql-client 其中过程会让输入用户名和密码 2.启动mysql服务 sudo ser ... 
- 面向对象【林老师版】:特性(property)(十六)
			一.什么是特性property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 例一:BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成 ... 
- java io系列26之 RandomAccessFile
			本文主要介绍 RandomAccessFile. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_26.html 更多内容请参考:java io系列0 ... 
- Linux记录-sysctl.conf优化方案
			Sysctl是一个允许您改变正在运行中的Linux系统的接口.它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能.用sysctl可以读取设置超过五百 ... 
- Oracle分析函数-rank() over(partition by...order by...)
			select *from ( SELECT t.s#,---学号 t.c#,---课程号 T.SCCORE, ---成绩 RANK() OVER(PARTITION BY t.c# ORDER BY ... 
