摘要: 这题是最长公共子序列的变形,要注意的就是,题目要求输出最长上升子序列的字典排序最小值,最麻烦的就是这个,想了半天都没什么思路,我对最长上升子序列的理解不是很透彻。在网上看了别人的题解,都是用一个结构题来保存状态 (公共子序列的长度,公共子序列的串)我才恍然大悟,既然这样,那不是搜索一遍所有的状态的字符串就可以了吗。#include #include #include #include #include using namespace std; #define MAXN 1010 struct Node { int l; string s; }no[MAXN][MAXN]; char sm[.. 阅读全文
posted @ 2013-09-23 22:21 湖心北斗 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 此题的大意是给定一个序列,求一个最长的奇数子序列,使得前k个序列上升,后k个序列下降。此题的解法是从左往右求一次最长上升子序列,然后从右往左再求一次最长上升子序列,分别记录在状态变量d1[i],d2[i],求min(d1[i],d2[i])的最大值即可,答案就是2*min-1。#include #include #include #include #include using namespace std; #define MAXN 10010 #define INF 1000000000 int seq[MAXN]; int d1[MAXN],d2[MAXN]; int g[MAXN]; in 阅读全文
posted @ 2013-09-23 21:59 湖心北斗 阅读(321) 评论(0) 推荐(0) 编辑