UVA - 11404

题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串


不要求路径区间DP都可以做

然而要字典序最小

倒过来求LCS,转移同时维护f[i][j].s为当前状态字典序最小最优解

f[n][n].s的前半部分一定是回文串的前半部分(想想就行了)

当s的长度为奇时要多输出一个(因为这样长度+1,并且字典序保证最小(如axyzb  bzyxa,就是axb|||不全是回文串的原因是后半部分的字典序回文串可能不是最小,多加的这一个是回文之间夹着的字典序最小的))

//
// main.cpp
// uva11404
//
// Created by Candy on 03/11/2016.
// Copyright © 2016 Candy. All rights reserved.
// #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=1e3+;
char a[N],b[N];
int n;
//void dp(){
// n=strlen(a+1);
// ans=0;
// //for(int i=1;i<=n;i++) f[i][i]=1;
// for(int i=n;i>=1;i--){
// f[i][i]=1;
// for(int j=i+1;j<=n;j++){
// f[i][j]=max(f[i+1][j],f[i][j-1]);
// if(a[i]==a[j]) f[i][j]=max(f[i][j],f[i+1][j-1]+1);
// }
// }
//}
struct data{
int v;
string s;
data(){v=;s="";}
}f[N][N];
void dp(){
for(int i=;i<=n;i++) b[i]=a[n-i+]; for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
if(a[i]==b[j]){
f[i][j].v=f[i-][j-].v+;
f[i][j].s=f[i-][j-].s+a[i];
}else{
if(f[i][j-].v>f[i-][j].v){
f[i][j].v=f[i][j-].v;
f[i][j].s=f[i][j-].s;
}else if(f[i-][j].v>f[i][j-].v){
f[i][j].v=f[i-][j].v;
f[i][j].s=f[i-][j].s;
}else{
f[i][j].v=f[i][j-].v;
f[i][j].s=min(f[i][j-].s,f[i-][j].s);
}
}
}
}
int main(int argc, const char * argv[]) {
while(scanf("%s",a+)!=EOF){
n=strlen(a+);
dp();
int len=f[n][n].v;
string s=f[n][n].s;
if(len&){
len/=;
for(int i=;i<len;i++) putchar(s[i]);
for(int i=len;i>=;i--) putchar(s[i]);//!
}else{
len/=;
for(int i=;i<len;i++) putchar(s[i]);
for(int i=len-;i>=;i--) putchar(s[i]);
}
putchar('\n');
} return ;
}

UVA 11404 Palindromic Subsequence[DP LCS 打印]的更多相关文章

  1. LPS UVA 11404 Palindromic Subsequence

    题目传送门 题意:求LPS (Longest Palidromic Subsequence) 最长回文子序列.和回文串不同,子序列是可以不连续的. 分析:1. 推荐->还有一种写法是用了LCS的 ...

  2. UVA 11404 Palindromic Subsequence

    Palindromic Subsequence Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA ...

  3. UVa 11404 Palindromic Subsequence (LCS)

    题意:给定一个字符串,问删除一些字符,使得它成为一个最长回访串,如果有多个,输出字典序最小的那个. 析: 我们可以把原字符串反转,然后求两个串的LCS,就得到最长回文串,不过要注意一些细节. 代码如下 ...

  4. UVA 531 - Compromise(dp + LCS打印路径)

      Compromise  In a few months the European Currency Union will become a reality. However, to join th ...

  5. UVA 10405 Longest Common Subsequence (dp + LCS)

    Problem C: Longest Common Subsequence Sequence 1: Sequence 2: Given two sequences of characters, pri ...

  6. 【UVa】Palindromic Subsequence(dp+字典序)

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

  7. uva 111 - History Grading (dp, LCS)

    题目链接 题意:给N,第二行是答案,n个数c1---cn, 代表第一个的顺序是c1,第二个数顺序是c2; 下面每一行是学生的答案,格式同上. 注意:这个给的顺序需要处理一下,不能直接用. 思路:LCS ...

  8. uva 11404 dp

    UVA 11404 - Palindromic Subsequence 求给定字符串的最长回文子序列,长度一样的输出字典序最小的. 对于 [l, r] 区间的最长回文串.他可能是[l+1, r] 和[ ...

  9. UVA 11404 五 Palindromic Subsequence

     Palindromic Subsequence Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu ...

随机推荐

  1. Web.config配置数据库连接

    web.config配置数据库连接   第一种:取连接字符串 string connString = System.Web.Configuration.WebConfigurationManager. ...

  2. WCF之net.tcp

    自己通过编写WCF服务端,在客户端直接添加服务引用时发现不能引用对netTcpBinding直接引用(net.tcp://127.0.0.1:8081),所以自己找到方法了记录以备不时之需. 服务端配 ...

  3. php中导入导出excel的原理

    在php中我们要经常导入导出excel文件,方便后台管理.那么php导入和导出excel的原理到底是什么呢?excel分为两大版本excel2007(后缀.xlsx).excel2003(后缀.xls ...

  4. 用python来个百度关键词刷排名脚本

    目的:写个脚本来提升百度排名 我一个seo届前辈的朋友找我,他说,seo事无巨细,自己主观方面能做的几乎都能做了,提升百度等搜索引擎中的排名往往效果不佳或者起效周期慢.能不能人为去干预下呢? 获得排名 ...

  5. 10、ASP.NET MVC入门到精通——Model(模型)和验证

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 模型就是处理业务,想要保存.创建.更新.删除的对象. 注解(通过特性实现) DisplayName Required StringLengt ...

  6. jQuery组件开发之表格隔行选中效果实现

    一.效果展示如下 jQuery组件之表格插件源码 //表格选中插件 //方式一 (function($){ var chosTabBgColor = function(options){ //设置默认 ...

  7. powershell对txt文件的服务器进行ping操作

    powershell对txt文件的服务器进行ping操作,txt文件有几百台服务器要进行Ping操作.每行一个 #//***************************************** ...

  8. 如何正确响应ArcGIS JavaScript API中图形的鼠标事件

    在使用ArcGIS JavaScript API编写程序的时候,程序员往往需要完成这样一个功能:点击地图上的图形,自动进行专题GIS数据查询,当在地图非图形区域上点击时,自动进行底图兴趣点查询. 由于 ...

  9. iOS之搜索框UISearchController的使用(iOS8.0以后替代UISearchBar+display)

    在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISe ...

  10. JavaScript单元测试框架JsUnit基本介绍和使用

    JavaScript单元测试框架JsUnit基本介绍和使用 XUnit framework XUnit是一套标准化的独立于语言的概念和结构集合,用于编写和运行单元测试(Unit tests). 每一个 ...