#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
int dp[];
char str[];
int n;
bool isbiger (int x1,int y1,int x2,int y2) {//判断x1-y1字符串与x2-y2字符串的大小
while (str[x1]==''&&x1<=y1) x1++;
while (str[x2]==''&&x2<=y2) x2++;
if (x1>y1) return ;
if (x2>y2) return ;
int n1=y1-x1; int n2=y2-x2;
if (n1>n2) return ;
if (n2>n1) return ;
for (;x1<=y1;x1++,x2++) {
if (str[x1]>str[x2]) return ;
else if (str[x1]<str[x2]) return ;
}
return ;
}
int main ()
{
char _end[]="";
while (gets(str+)&&strcmp(str+,_end)!=) {
int n=strlen(str+); dp[]=;
for (int i=;i<=n;i++) {//第一次dp --dp[i](1-i字符串构成递增序列,最后一个字符串的最小长度)
dp[i]=i;
for (int j=i;j>=;j--) {
if ( isbiger(j,i,j-dp[j-],j-) ) {
dp[i]=i-j+;
break;
}
}
}
int len=n-dp[n];
dp[len+]=dp[n];
int i;
for (i=len;i>=&&str[i]=='';i--) //第二次dp--利用已知最后一位的最小值反推前面的最大值
dp[i]=dp[i+]+;// 前导为零即使加上最后一个字符的大小不会改变
for (;i>=;i--) {
for (int j=len;j>=i;j--) {
if ( isbiger (j+,j+dp[j+],i,j) ) {//dp[i]-(从i-n字符串中) 第一个字符串的最大值
dp[i]=j-i+;
break;
}
}
}
i=;
while (i<=n) {
int j=i+dp[i];
for (;i<j;i++)
printf ("%c",str[i]);
if (i<=n)
printf (",");
}
printf ("\n");
}
return ;
}

poj-1239(递推关系)好难的更多相关文章

  1. POJ 1239 Increasing Sequences 动态规划

    题目链接: http://poj.org/problem?id=1239 Increasing Sequences Time Limit: 1000MSMemory Limit: 10000K 问题描 ...

  2. POJ 1239 Increasing Sequences(经典的两次dp)

    http://poj.org/problem?id=1239 题意:给出一串序列,现在要添加逗号作为分隔符,使得序列是递增序列,然后让最后一个数尽量小,第一个数尽量大. 思路:先从头到尾进行一次dp, ...

  3. poj 1239

    二次dp,还算好想. 先第一遍dp找出最后一个数字最小是几. dpf[i]=max{j}+1(dpf[j],dpf[j]+1,…,j位组成的数字小于j+1,j+2,…,i位组成的数字. 在第二遍dp, ...

  4. POJ 1239 Increasing Sequences [DP]

    题意:略. 思路:进行两次dp. 第一次dp从前向后,用dp[x]表示从第x位向前dp[x]位可构成一个数字,且与前面的数组符合题意要求.最后求的dp[n]即为最后一个数字的长度. 而题目还有要求,所 ...

  5. poj很好很有层次感(转)

    OJ上的一些水题(可用来练手和增加自信) (POJ 3299,POJ 2159,POJ 2739,POJ 1083,POJ 2262,POJ 1503,POJ 3006,POJ 2255,POJ 30 ...

  6. POJ题目分类推荐 (很好很有层次感)

    著名题单,最初来源不详.直接来源:http://blog.csdn.net/a1dark/article/details/11714009 OJ上的一些水题(可用来练手和增加自信) (POJ 3299 ...

  7. [转] POJ图论入门

    最短路问题此类问题类型不多,变形较少 POJ 2449 Remmarguts' Date(中等)http://acm.pku.edu.cn/JudgeOnline/problem?id=2449题意: ...

  8. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  9. 图论常用算法之一 POJ图论题集【转载】

    POJ图论分类[转] 一个很不错的图论分类,非常感谢原版的作者!!!在这里分享给大家,爱好图论的ACMer不寂寞了... (很抱歉没有找到此题集整理的原创作者,感谢知情的朋友给个原创链接) POJ:h ...

  10. 【转载】ACM总结——dp专辑

    感谢博主——      http://blog.csdn.net/cc_again?viewmode=list       ----------  Accagain  2014年5月15日 动态规划一 ...

随机推荐

  1. viewpager实现画廊(一屏多个Fragment)效果

    本文主要介绍如何利用ViewPager实现Gallery的画廊效果,即一屏显示多个Fragment. 效果图如下: 在 使用Gallery的时候大家会发现有几个问题(1). 无法控制每次滑动只滑动一页 ...

  2. C#实现的UDP收发请求工具类实例

    本文实例讲述了C#实现的UDP收发请求工具类.分享给大家供大家参考,具体如下: 初始化: ListeningPort = int.Parse(ConfigurationManager.AppSetti ...

  3. Ubuntu中vi命令的编辑模式异常

    今天更改Ubuntu软件源的时候,进入源文件的编辑模式时,发现删除键和编辑都不能正常使用,百度之后,知道是由于Ubuntu预装的是vim-tiny,而我们需要使用vim-full.在此记录下该问题以便 ...

  4. mysql timestamp的默认值

    当default 0,default '0000-00-00 00:00:00'都失效的时候,请尝试下 ALTER table `coupon_gift` add column `time_end` ...

  5. loj#101. 最大流 dinic+当前弧

    板子题 当前弧优化版本 目前效率最高 //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize(&q ...

  6. POJ-3414 Pots (BFS)

    Description You are given two pots, having the volume of A and B liters respectively. The following ...

  7. Oracle性能诊断艺术-相关脚本说明

    第二章 bind_variables.sql     展示怎样绑定变量及何时绑定变量会导致游标共享 bind_variables_peeking.sql  展示绑定变量窥测的优缺点 selectivi ...

  8. iOS UI-UIScrollView控件实现图片轮播 (UIPageControl-分页指示器)

    一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: #import "ViewController.h" #define HM ...

  9. OC 类对象和类加载

    //------------------------Persion类----------------------------// 1 #import "Person.h" @imp ...

  10. bzoj3105

    题解: 一道博弈论 题目要求取得最少,那么就是留下的最多 把石子从大到小排序 从打的开始刘 如果可以留,那么就留下了 如果留下了与前面留下来的异或后不为0,那么就可以留 代码: #include< ...