POJ1221(整数划分)
UNIMODAL PALINDROMIC DECOMPOSITIONS
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 5430 | Accepted: 2641 |
Description
23 11 15 1 37 37 1 15 11 23
1 1 2 3 4 7 7 10 7 7 4 3 2 1 1
A Palindromic sequence is Unimodal Palindromic if the values do not decrease up to the middle value and then (since the sequence is palindromic) do not increase from the middle to the end For example, the first example sequence above is NOT Unimodal Palindromic while the second example is.
A Unimodal Palindromic sequence is a Unimodal Palindromic Decomposition of an integer N, if the sum of the integers in the sequence is N. For example, all of the Unimodal Palindromic Decompositions of the first few integers are given below:
1: (1)
2: (2), (1 1)
3: (3), (1 1 1)
4: (4), (1 2 1), (2 2), (1 1 1 1)
5: (5), (1 3 1), (1 1 1 1 1)
6: (6), (1 4 1), (2 2 2), (1 1 2 1 1), (3 3),
(1 2 2 1), ( 1 1 1 1 1 1)
7: (7), (1 5 1), (2 3 2), (1 1 3 1 1), (1 1 1 1 1 1 1)
8: (8), (1 6 1), (2 4 2), (1 1 4 1 1), (1 2 2 2 1),
(1 1 1 2 1 1 1), ( 4 4), (1 3 3 1), (2 2 2 2),
(1 1 2 2 1 1), (1 1 1 1 1 1 1 1)
Write a program, which computes the number of Unimodal Palindromic Decompositions of an integer.
Input
Output
Sample Input
2
3
4
5
6
7
8
10
23
24
131
213
92
0
Sample Output
2 2
3 2
4 4
5 3
6 7
7 5
8 11
10 17
23 104
24 199
131 5010688
213 1055852590
92 331143
题意:
给一个正整数,求出它的Unimodal Palindromic的个数,所谓的Unimodal Palindromic就是一系列数,单调递增再递减,并且第一个和最后一个数相同,第二个跟倒数第二个数相同,即第i个跟第n-i+1个数相同。
思路:
把它的Unimodal Palindromic分成两部分:一部分是最小数是j的,就是第一个跟最后一个数等于j的有几个;第二部分是最小数大于j的,可以是j+1,j+2…..的有几个。
dp[i][j]表示和为i,最小数是j的序列的个数。那么第一部分就是dp[i-j*2][j],
意思就是和为去掉了首尾两个数后的和,最小数是j;第二部分就是dp[i][j+1].最小数大于j的情况的个数。状态转移方程:
dp[i][j] = dp[i-2*j][j] + dp[i][j+1]
初始化:
①.dp[0][j]初始值1.因为当需要调用dp[0][j]时,表示拆成了两个相同的数。有一个
②.dp[i][j](i<j< font="">)初始值0,不可能的情况
③.dp[i][j] (i>=j >i/2) 初始值1,j>i/2时所有s[i][j]都是1,那个就是i本身。
//2016.8.22
#include<cstdio>
#include<cstring>
#define ll long long using namespace std; const int N = ;
ll dp[N][N]; int main()
{
int n;
memset(dp, , sizeof(dp));
for(int i = ; i < N; i++)
dp[][i] = ;
for(int i = ; i < N; i++)
for(int j = i/+; j <= i; j++)
dp[i][j] = ;
for(int i = ; i < N; i++)
for(int j = i/; j > ; j--)
dp[i][j] = dp[i-*j][j]+dp[i][j+];
while(scanf("%d", &n)!=EOF && n)
{
printf("%d %lld\n", n, dp[n][]);
} return ;
}
POJ1221(整数划分)的更多相关文章
- 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> ...
- NYOJ-571 整数划分(三)
此题是个非常经典的题目,这个题目包含了整数划分(一)和整数划分(二)的所有情形,而且还增加了其它的情形,主要是用递归或者说是递推式来解,只要找到了递推式剩下的任务就是找边界条件了,我觉得边界也是非常重 ...
- BZOJ1263: [SCOI2006]整数划分
1263: [SCOI2006]整数划分 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 677 Solved: 332[Submit][Status] ...
随机推荐
- YouKu iOS笔试题一
序言 最近收到某某同学将去youku的iOS笔试题的邮件,希望笔者能整理一下,并提供参考答案.笔者决定整理出来,并分享给大家.当然,与此同时,也想看看youku的笔试题到底有多难,也考考自己有多少料吧 ...
- 基于css3的环形动态进度条(原创)
基于css3实现的环形动态加载条,也用到了jquery.当时的想法是通过两个半圆的转动,来实现相应的效果,其实用css3的animation也可以实现这种效果.之所以用jquery是因为通过jquer ...
- postgresql 数据库的备份和恢复 (pg_dump 和 pg_restore)
pg_dump 用来备份数据库: pg_restore 用来恢复数据库: 备份出来的文件可以用 XZ (linux 自带的压缩工具压缩). XZ压缩最新压缩率之王 xz这个压缩可能很多都很陌生,不过您 ...
- CodeForces 626B Cards
瞎搞题...凭直觉+猜测写了一发,居然AC了.. #include<cstdio> #include<cstring> #include<cmath> #inclu ...
- MYSQL一次性能优化实战经历[转]
每次经历数据库性能调优,都是对性能优化的再次认识.对自己知识不足的有力验证,只有不断总结.学习才能少走弯路. 一.性能问题描述 应用端反应系统查询缓慢,长时间出不来结果.SQLServer数据库服务器 ...
- HUST 1605 Gene recombination
简单广搜.4进制对应的10进制数来表示这些状态,总共只有(4^12)种状态. #include<cstdio> #include<cstring> #include<cm ...
- Spring Junit 读取WEB-INF下的配置文件
假设Spring配置文件为applicationContext.xml 一.Spring配置文件在类路径下面 在Spring的java应用程序中,一般我们的Spring的配置文件都是放在放在类路径下面 ...
- CodeSmith生成实体类
1.新建一个模板,将以下代码复制进去,在属性工具栏里设置 SourceTtable和NameSpace , 点击生成即可 <%@ CodeTemplate Language="C#&q ...
- IOS开发中数据持久化的几种方法--NSUserDefaults
IOS开发中数据持久化的几种方法--NSUserDefaults IOS 开发中,经常会遇到需要把一些数据保存在本地的情况,那么这个时候我们有以下几种可以选择的方案: 一.使用NSUserDefaul ...
- IOS中单例NSUserDefaults的使用(转)
一.了解NSUserDefaults以及它可以直接存储的类型 http://my.oschina.net/u/1245365/blog/294449 NSUserDefaults是一个单例,在整个程序 ...