URAL1635. Mnemonics and Palindromes(DP)
先初始化一下所有的回文串 再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)的更多相关文章
- Ural 1635 Mnemonics and Palindromes(DP)
题目地址:space=1&num=1635">Ural 1635 又是输出路径的DP...连着做了好多个了. . 状态转移还是挺简单的.要先预处理出来全部的回文串,tag[i] ...
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- 【ARC064-F】【XSY2575】Rotated Palindromes(DP)(字符串)
Description 然而,由于小C沉迷于制作游戏,他完全忘记了自己作为国家集训队的一员,还有156道作业题等他完成.还有一天作业就要截止了,而他一题还没有做.于是他赶紧挑了一道看起来最简单的题: ...
- 【UVa】Partitioning by Palindromes(dp)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=27&page=sh ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- 初探动态规划(DP)
学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...
- Tour(dp)
Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...
随机推荐
- iOS开发——图片轮播图+单选选项
由于公司开发需要,需要滚动每道评测题, 并且一道评测题单项选择,按钮和文字都可点击选中 (单选比多选复杂一点,但是原理差不多) 1.当初任务紧,代码也没有优化,仅供思路参考,先放几张图 2.代码部分 ...
- ReactiveCocoa 谈谈concat
今天的一个业务流程,业务流程大概就是这样的 1.从CoreData中获取之前的数据 2.更新界面 3.从网络获取数据 4.判断获取结果 5.处理错误判断 6.更新界面 7.判断结果numberOfNe ...
- Windows 键盘操作快捷方式积累
复制.粘贴: CTRL+C 复制被选择的项目到剪贴板 CTRL+V 粘贴剪贴板中的内容到当前位置 CTRL+X 剪切被选择的项目到剪贴板 Alt+ space + E + P CMD 窗口快速粘贴 关 ...
- 、Dll文件的编写 调用 说明
1>新建Dll文件TestLib.dll 新建Unit文件U_TestFunc U_TestFunc代码如下: unit U_TestFunc; interface uses //尽可能的少us ...
- Django操作数据库
引入models的定义 from app.models import myclass class myclass(): aa = models. CharField (max_leng ...
- DBMS_SCHEDULER and DBMS_JOB
引用原文:http://foolraty.iteye.com/blog/1107803 For DBMS_JOB usage:To find out more information about th ...
- c# 判断窗体是否永在最前(TopMost),调用windows API
许多程序都可以把自身的窗体设为最前显示状态,这个可以参考博客c#让窗体永在最前 调用windows api 将窗体设为topmost.那么如何判断桌面上的一个窗体是否为最前显示状态呢,不光是自己的程序 ...
- Java基础中的一些注意点(续)
1.局部(local)变量是在一个方法内定义的变量, 也被称作自动(automatic).临时(temporary)或栈(stack)变量 - 当一个方法被执行时, 局部变量被创建: ...
- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试][关于电梯调度算法的附加思考]:刘耀先-11061183,罗凡-11061174
本文为对于电梯调度算法的三个附加题思考 1.改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享. <1>进一步提高API定义 ...
- hdu 1403 Longest Common Substring(最长公共子字符串)(后缀数组)
http://acm.hdu.edu.cn/showproblem.php?pid=1403 Longest Common Substring Time Limit: 8000/4000 MS (Ja ...