Partition Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 842    Accepted Submission(s): 478 Problem Description How many ways can the numbers 1 to 15 be added together to make 15? The technical…
Partition Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 462    Accepted Submission(s): 262 Problem Description How many ways can the numbers 1 to 15 be added together to make 15? The technica…
下面内容摘自维基百科: 五边形数定理[编辑] 五边形数定理是一个由欧拉发现的数学定理,描写叙述欧拉函数展开式的特性[1] [2].欧拉函数的展开式例如以下: 亦即 欧拉函数展开后,有些次方项被消去,仅仅留下次方项为1, 2, 5, 7, 12, ...的项次,留下来的次方恰为广义五边形数. 当中符号为- - + + - - + + ..... 若将上式视为幂级数,其收敛半径为1,只是若仅仅是当作形式幂级数(formal power series)来考虑,就不会考虑其收敛半径. 和切割函数的关系…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:给出n.求其整数拆分的方案数. i64 f[N]; void init(){    f[0]=f[1]=1; f[2]=2;    int i,j,k,t;    for(i=3;i<N;i++) for(j=1;;j++)    {        FOR0(k,2)        {            if(!k) t=(3*j*j-j)/2;            else t=…
题意:把一个整数N(1 <= N <= 100000)拆分不超过N的正整数相加,有多少种拆法. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 ——>>好经典的问题,但数好大,比赛卡住了... 原来,这个问题有个公式计算: q[i]为第i个广义五边形数. #include <cstdio> using namespace std; const int maxn = 100000; const int mod = 1…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4651 参考:https://blog.csdn.net/u013007900/article/details/42365823 https://blog.csdn.net/visit_world/article/details/52734860 好像这样复杂度就是 \( O(n\sqrt{n} \) 的了. #include<cstdio> #include<cstring> #inclu…
定理详见维基百科....http://zh.wikipedia.org/wiki/%E4%BA%94%E9%82%8A%E5%BD%A2%E6%95%B8%E5%AE%9A%E7%90%86 代码如下: #include <cstdio> #include <cstring> #include <algorithm> #define LL long long #define INF 0x7fffffff #define MOD 1000000007 #define M…
HDU 4651 Partition Problem : n的整数划分方案数.(n <= 100008) Solution : 参考资料: 五角数 欧拉函数 五边形数定理 整数划分 一份详细的题解 欧拉函数的定义如下: \[\phi(q) =\prod\limits_{n=1}^{\infty}(1-q^n) \] 五边形定理对欧拉函数展开如下: \[\phi(q) = \sum_{n = 0}^{n = \infty}(-1)^nq^{\frac{3n^2\pm n}{2}}\] 其中 \(\…
http://acm.hdu.edu.cn/showproblem.php?pid=5230 把题目简化后,就是求 1---n - 1这些数字中,将其进行整数划分,其中整数划分中不能有重复的数字,如果有这样的划分并且那个数字在[L, R]区间中,那么就算做一个贡献. 以前的整数划分,一般就是dp[i][j]表示i这个数字,最小的拆分数是j的时候,拥有的方案数,可以控制其没有重复数字,但是空间复杂度太大. 用一种新的方法 dp[i][j]表示j这个数字,当前的拆分拥有i个拆分数时的方案数.至于为什…
http://acm.hdu.edu.cn/showproblem.php?pid=1028 dp[i][j]表示数值为i,然后最小拆分的那个数是j的时候的总和. 1 = 1 2 = 1 + 1 .  2 = 2 3 = 1 + 1 + 1. 3 = 2 + 1. 3 = 3 那么可以分两类, 1.最小拆分数是j,这个时候dp[i][j] = dp[i - j][j].加一个数j,使得它变成i 2.最小拆分数严格大于j,这个时候就没得加上j了.就是dp[i][j + 1] 所以dp[i][j]…