时间限制:1 秒

内存限制: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)的更多相关文章

  1. 九度oj 题目1262:Sequence Construction puzzles(I)_构造全递增序列

    题目描述: 给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列. 输入: 输入的第一行包括一个整数N(1<=N<=10000). 接下来的一行是N个满足题目描述条件的整 ...

  2. 九度oj 题目1354:和为S的连续正数序列

    题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...

  3. 【九度OJ】题目1442:A sequence of numbers 解题报告

    [九度OJ]题目1442:A sequence of numbers 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1442 ...

  4. 【九度OJ】题目1144:Freckles 解题报告

    [九度OJ]题目1144:Freckles 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1144 题目描述: In an ...

  5. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  6. 九度OJ 1502 最大值最小化(JAVA)

    题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...

  7. 九度OJ,题目1089:数字反转

    题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...

  8. 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)

    题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...

  9. 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...

随机推荐

  1. 20160208.CCPP体系具体解释(0018天)

    程序片段(01):main.c 内容概要:PointWithOutInit #include <stdio.h> #include <stdlib.h> //01.野指针具体解 ...

  2. Node.js的静态页面想通过jQuery的Ajax函数调用远程服务的措施无效

    程序下载:https://files.cnblogs.com/files/xiandedanteng/nodejsMakejqueryAjaxInvalid.rar 在 http://www.cnbl ...

  3. 倍福TwinCAT(贝福Beckhoff)基础教程3.1 TwinCAT如何编写简单的计算器

    把编写简单计算器作为入门的第一个范例程序,主要是因为比较简单,而且综合了HMI,数据类型,数据转换,PRG和FBD等功能块的混合等知识,个人认为还是比较适合用来快速上手的.由于是第一个范例,所以视频教 ...

  4. CSS——如何清除浮动

    众所周知,平时在写HTML代码时,难免少不了使用Float样式,这样一来,假使您没有清除浮动,那么有浮动元素的父元素容器将元素将无法自动撑开.换句简单好理解的话来说,假如你在写CODE时,其中div. ...

  5. 自定义HttpReqeust,解决request请求参数只能拿一次就失效的问题

    定义一个过滤器并实现如下方法 @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResp ...

  6. JavaWeb Session详解

    代码地址如下:http://www.demodashi.com/demo/12756.html 记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + ## Session的由来 上一篇博文介绍 ...

  7. Maven学习小结

    简介:一款服务于Java的自动化构建工具 1 安装 必须已经安装了jdk且配置了环境变量,注意查看当前maven版本支持的jdk版本 配置Maven的环境变量 MAVEN_HOME PATH 使用mv ...

  8. iOS项目开发之仿网易彩票推荐应用

    简介 效果展示 思路分析 代码实现 Git地址 一.简介 某些公司有较多的产品时,通常会在一个产品中推广另外的一些产品,我简单的封装了一个UIControllerView,由于不同公司,要求不同.所以 ...

  9. ios 不通过import 调用其他控制器的方法

    ios 开发过程中在不通过import 调用其他类的方法 //获取类名 Class controller = NSClassFromString(@"controller"); / ...

  10. create table #temptable 临时表 和 declare @bianliang table ()表变量

    create table #temptable 临时表 和 declare @bianliang table ()表变量 在开发过程中,经常会遇到使用表变量和本地临时表的情况.下面是对二者的一个介绍: ...