九度OJ 1262:Sequence Construction puzzles(I)_构造全递增序列 (DP)
2015-11-14 17:20
531 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:118
解决:54
题目描述:
给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列。
输入:
输入的第一行包括一个整数N(1<=N<=10000)。
接下来的一行是N个满足题目描述条件的整数。
输出:
可能有多组测试数据,对于每组数据,
输出去掉最少的元素后的全递增序列。
样例输入:
样例输出:
提示:
如果有多个结果序列满足条件,输出相对位置靠前的那个序列。
思路:
此题并不是求最长递增序列这么简单,这句话才是本题难点所在:
如果有多个结果序列满足条件,输出相对位置靠前的那个序列。
本人第一遍一直在想各种方式保存状态,达到目的,却一直各种错误。
后来放弃了在原有的代码上修改,重写了一遍,AC了。
代码:
内存限制:32 兆
特殊判题:否
提交:118
解决:54
题目描述:
给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列。
输入:
输入的第一行包括一个整数N(1<=N<=10000)。
接下来的一行是N个满足题目描述条件的整数。
输出:
可能有多组测试数据,对于每组数据,
输出去掉最少的元素后的全递增序列。
样例输入:
8 186 186 150 200 160 130 197 220
样例输出:
150 160 197 220
提示:
如果有多个结果序列满足条件,输出相对位置靠前的那个序列。
思路:
此题并不是求最长递增序列这么简单,这句话才是本题难点所在:
如果有多个结果序列满足条件,输出相对位置靠前的那个序列。
本人第一遍一直在想各种方式保存状态,达到目的,却一直各种错误。
后来放弃了在原有的代码上修改,重写了一遍,AC了。
代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> #define N 10000 typedef struct node { int id; int mNum; struct node *next; } Post; int n; int a[N+1]; int mLen; Post *p[N+1]; Post *insert(Post *t, int id) { Post *h = (Post *)malloc(sizeof(Post)); h->id = id; h->next = t; h->mNum = a[id]; if (!t) mLen ++; else if (t->mNum > h->mNum) h->mNum = t->mNum; return h; } int main(void) { int i, j; while (scanf("%d", &n) != EOF) { for(i=0; i<n; i++) scanf("%d", &a[i]); memset(p, 0, sizeof(p)); mLen = 0; for (i=n-1; i>=0; i--) { for (j=mLen; j>0; j--) { Post *t = p[j]; if (t && t->mNum > a[i]) { while (t) { if (a[t->id] > a[i]) break; } p[j+1] = insert(p[j+1], i); break; } } if (j == 0) p[1] = insert(p[1], i); } int step = mLen; Post *t = p[step]; int id = t->id; printf("%d", a[id]); step --; while (step) { t = p[step]; while (t->id <= id) t = t->next; id = t->id; printf(" %d", a[id]); step --; } printf("\n"); } return 0; } /************************************************************** Problem: 1262 User: liangrx06 Language: C Result: Accepted Time:20 ms Memory:1824 kb ****************************************************************/
相关文章推荐
- 九度OJ 1262:Sequence Construction puzzles(I)_构造全递增序列 (DP)
- UI第四天 触摸 响应者链 target-action
- TI DSP TMS320C66x学习笔记之通用并行端口uPP(二)
- iOS UI CodeSnippet
- Teamviewer QuickSupport - 在电脑上远程连接控制手机/平板的软件神器 (Android/iOS)
- 爬爬爬之路:UI(四) 晃动响应 触摸响应 响应者链 显示动态图片
- sicily 1209. Sequence Sum Possibi
- Guest Speaker on 2015 WinHEC Shenzhen 秋季大会
- ural 1247. Check a Sequence
- [Leetcode]Range Sum Query 2D - Immutable
- GPUImage API文档之GPUImageFramebufferCache类
- UITableView插入Section
- 关于UITableView的间隔问题(header和footer)和分割线
- iOS UITableView head view与cell view文字垂直居中,文字右对齐
- 随意细解:UI -- 事件处理
- Java小程序之GUI开发简单前台登录界面
- UI基础-事件处理
- 5.UIButton(按钮)知识总结
- sicily 1242. Suit Distribution
- 重写ENqUEUE和DEQUEUE,使之能处理队列的下溢和上溢。