链接

先初始化一下所有的回文串 再O(n*n)DP

输出路径dfs 刚开始存所有回文 ME了 后来发现用不着 改了改了OK了 数据还挺强

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define N 4010
#define INF 0xfffffff
int dp[N];
char s[];
int path[][],o[],q[][],k;
int g,flag,pp[];
void init()
{
int i,j;
k = strlen(s);
for(i = ; i < k ; i++)
{
int tt=;
while(i-tt>=&&i+tt<k&&s[i-tt]==s[i+tt])
{ g++;
int x1 = i-tt,x2 = i+tt;
o[x2]++;
q[x2][o[x2]] = x1;
tt++;
}
tt = ;
while(i-tt+>=&&i+tt<k&&s[i-tt+]==s[i+tt])
{
g++;
int x1 = i-tt+,x2 = i+tt;
o[x2]++;
q[x2][o[x2]] = x1;
tt++;
}
}
}
void dfs(int u,int d,int v)
{
if(flag) return ;
path[][v] = u;
path[][v] = d;
int i,j;
if(v==dp[k-])
{
for(i = dp[k-]; i > ; i--)
{
for(j = path[][i]; j <= path[][i]; j++)
printf("%c",s[j]);
printf(" ");
}
for(j = path[][]; j <= path[][]; j++)
printf("%c",s[j]);
puts("");
flag = ;
return ;
}
for(i = ; i <= o[u-] ; i++)
{
if(q[u-][i]==)
dfs(q[u-][i],u-,v+);
else
if(dp[u-]==dp[q[u-][i]-]+)
{
dfs(q[u-][i],u-,v+);
}
}
}
int main()
{
int i,j;
scanf("%s",s);
init();
for(i = ; i <= k ; i++)
dp[i] = INF;
dp[] = ;
for(i = ; i < k ;i++)
{
if(o[i])
{
for(j = ;j <= o[i] ; j++)
{
if(q[i][j]==)
{
dp[i] = ;
pp[] = i;
pp[] = q[i][j];
}
else if(dp[i]>dp[q[i][j]-]+)
{
dp[i] = dp[q[i][j]-]+;
pp[] = q[i][j];
pp[] = i;
}
}
}
}
printf("%d\n",dp[k-]);
dfs(pp[],pp[],);
return ;
}

URAL1635. Mnemonics and Palindromes(DP)的更多相关文章

  1. Ural 1635 Mnemonics and Palindromes(DP)

    题目地址:space=1&num=1635">Ural 1635 又是输出路径的DP...连着做了好多个了. . 状态转移还是挺简单的.要先预处理出来全部的回文串,tag[i] ...

  2. LightOJ 1033 Generating Palindromes(dp)

    LightOJ 1033  Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...

  3. 【ARC064-F】【XSY2575】Rotated Palindromes(DP)(字符串)

    Description 然而,由于小C沉迷于制作游戏,他完全忘记了自己作为国家集训队的一员,还有156道作业题等他完成.还有一天作业就要截止了,而他一题还没有做.于是他赶紧挑了一道看起来最简单的题: ...

  4. 【UVa】Partitioning by Palindromes(dp)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=27&page=sh ...

  5. lightOJ 1047 Neighbor House (DP)

    lightOJ 1047   Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...

  6. UVA11125 - Arrange Some Marbles(dp)

    UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...

  7. 【POJ 3071】 Football(DP)

    [POJ 3071] Football(DP) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4350   Accepted ...

  8. 初探动态规划(DP)

    学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...

  9. Tour(dp)

    Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...

随机推荐

  1. OC中 block 的用法

    block 常用于反向传值 声明 返回值类型 (^block)(参数列表) 调用 闭包的名字=^(参数列表){}: 闭包的名字(): 如: void(^aaaaa)(int num,NSString ...

  2. css 利用border属性制作箭头 Using Borders to Make Pure CSS Arrows

    不再需要多余的图片 用border属性自然能创造箭头效果 学习地址:http://tech.patientslikeme.com/2010/11/09/using-borders-to-make-pu ...

  3. [LINQ]查询关键字

    摘自https://msdn.microsoft.com/zh-cn/library/bb310804.aspx,方便以后翻阅. from子句 查询表达式必须以 from 子句开头.另外,查询表达式还 ...

  4. vmware以及schlumberger题解

    先是vmare的:具体的题目我就不描述了. 1. 贪吃的小明.直接数个数,统计个数,就可以完成.使用map,应该输入implement这一类,我认为很简单,但是我只过了33%. /* ID: y119 ...

  5. 省选训练赛第4场D题(多米诺骨牌)

    题目来自FZU2163 多米诺骨牌 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description Vasya很喜欢排多米诺 ...

  6. Windows下Wamp装不上Memcache扩展

    windows下wamp装不上memcache扩展2015.03.20 No Comments 1,243 views用的是WAMP集成包,PHP版本5.5.12http://windows.php. ...

  7. zoj 3829 Known Notation

    作者:jostree 转载请说明出处 http://www.cnblogs.com/jostree/p/4020792.html 题目链接: zoj 3829 Known Notation 使用贪心+ ...

  8. 排序算法SIX:冒泡排序BubbleSort

    /** *冒泡排序: * 两个两个比较,一轮过后最大的排在了最后面 * n个数变为n-1个没排好的数 * 再进行一轮 * 第二大的排在了倒数第二个 * 以此类推 * 直到排到第一个为止 * * 弄两个 ...

  9. prefix和unprefix

    exports._esModule = true; exports.default = { prefix: function prefix(prop){ if (prop[0] === '-'){ v ...

  10. 对Android中dp单位的理解

    dp 设备独立像素 ,也叫dip, device independent pixle. 比如同样在1英寸大小的屏幕上,高密度的屏幕可显示100个像素点,而低密度的屏幕只能70个点. 用了dp之后,只要 ...