poj 1221 UNIMODAL PALINDROMIC DECOMPOSITIONS(母函数)

原创 2012年03月30日 16:19:08

【题目大意】:给出一个数n,把它拆分成若干个数的和,要求最大的数在中间并向两边非递增。问拆法有多少种。


【解题思路】:母函数。枚举中间的那一个数,因为左右对称,所以只需要求左边部分的方案即可。注意,左右两部分的取数必须小于中间的数,中间的数是0的话则以n为最大取值。


【代码】:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <string>
#include <cctype>
#include <map>
#include <iomanip>
                   
using namespace std;
                   
#define eps 1e-8
#define pi acos(-1.0)
#define inf 1<<30
#define linf 1LL<<60
#define pb push_back
#define lc(x) (x << 1)
#define rc(x) (x << 1 | 1)
#define lowbit(x) (x & (-x))
#define ll long long

ll c1[500],c2[500];
int n;

ll solve(ll m,ll n){
    for (int i=0; i<=n; i++){
            c1[i]=1,c2[i]=0;
        }
    if (m==0) m=n;
    for (int i=2; i<=m; i++){
        for (int j=0; j<=n; j++){
            for (int k=0; k+j<=n; k+=i){
                c2[j+k]+=c1[j];
            }
        }
        for (int j=0; j<=n; j++) c1[j]=c2[j],c2[j]=0;
    }
    return c1[n];    
}

int main() {
    while (~scanf("%d",&n)) {
        if (n==0) break;
        ll ans=0;
        for (int i=0; i<=n; i++) 
            if ((n-i)%2==0) {
                ll tmp=solve(i,(n-i)/2);
                ans+=tmp;
            }
        cout << n << " " << ans << endl;
    }
    return 0;
}


[土狗之路]Coursera C++第10周作业(上)

这周作业有八道题,所以分为上下两部分。 先来第一题: 编程题#1:求字母的个数 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。...
  • panda711
  • panda711
  • 2016年01月19日 19:12
  • 1419

项目39.4-1输入一个正整数,判断其是否为一个回文数(例1221、12321都是回文数,正着看、倒着看,是同一个数)。

任务和代码:输入一个正整数,判断其是否为一个回文数(例1221、12321都是回文数,正着看、倒着看,是同一个数)。 /* 文件名:main.c 作者:小风景 完成日期:2015.10.22 问题描...
  • zyjiscainiao
  • zyjiscainiao
  • 2015年10月22日 20:21
  • 1128

C++第11周项目3——回文、素数

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759【项目3-回文、素数】(1)编制一个函数reverse,返回给定数据的“反序...
  • sxhelijian
  • sxhelijian
  • 2013年11月08日 21:22
  • 3848

POJ 1221 UNIMODAL PALINDROMIC DECOMPOSITIONS__动态规划

DescriptionA sequence of positive integers is Palindromic if it reads the same forward and backward....
  • tp7309
  • tp7309
  • 2016年11月19日 21:53
  • 238

POJ 1121-UNIMODAL PALINDROMIC DECOMPOSITIONS 动态规划

题目来源:http://poj.org/problem?id=1221 解题报告: 这道题求的是给定一个数字n,求n可以拆成多少种unimodal palindromic decompositio...
  • kindlucy
  • kindlucy
  • 2012年04月07日 11:33
  • 2752

ZOJ1353 Unimodal Palindromic Decompositions解题报告

#include #include #include #include using namespace std; unsigned num[1000][1000]; void f() {   ...
  • zhangzi_xing
  • zhangzi_xing
  • 2013年08月14日 00:09
  • 1426

UNIMODAL PALINDROMIC DECOMPOSITIONS-----动态规划-------单峰回文序列分解

#include #include #include using namespace std; typedef long long LL; const int maxn = 250 + 5; LL F...
  • czkct
  • czkct
  • 2016年02月28日 17:59
  • 470

动态规划之UNIMODAL PALINDROMIC DECOMPOSITIONS

UNIMODAL PALINDROMIC DECOMPOSITIONS Description A sequence ofpositive integers is Palindromic if i...
  • hqf1992
  • hqf1992
  • 2015年08月03日 19:59
  • 178

hdu1028 poj1221 母函数 整数的拆分

母函数对于初学者比较难以理解 杭电oj上面有一篇写的比较好的 链接为 http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=21943...
  • Summer__show_
  • Summer__show_
  • 2016年03月23日 19:42
  • 480

UVA 1221/HDU 2413/POJ 3343 Against Mammoths(二分+二分图匹配)

题目链接:点击打开链接 思路: 由于人类星球和外星球是一一对应的, 自然想到二分图匹配,  但是如果匹配, 必须是某人类星球能打赢某外星球才连边。  因为星球上的飞船数量随时间变化, 所以先考虑把...
  • weizhuwyzc000
  • weizhuwyzc000
  • 2016年10月10日 12:39
  • 634
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 1221 UNIMODAL PALINDROMIC DECOMPOSITIONS(母函数)
举报原因:
原因补充:

(最多只允许输入30个字)