九度OJ 1262:Sequence Construction puzzles(I)_构造全递增序列 (DP)
时间限制: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)的更多相关文章
- 九度oj 题目1262:Sequence Construction puzzles(I)_构造全递增序列
题目描述: 给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列. 输入: 输入的第一行包括一个整数N(1<=N<=10000). 接下来的一行是N个满足题目描述条件的整 ...
- 九度oj 题目1354:和为S的连续正数序列
题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...
- 【九度OJ】题目1442:A sequence of numbers 解题报告
[九度OJ]题目1442:A sequence of numbers 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1442 ...
- 【九度OJ】题目1144:Freckles 解题报告
[九度OJ]题目1144:Freckles 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1144 题目描述: In an ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ 1502 最大值最小化(JAVA)
题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
- 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...
- 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...
随机推荐
- 通过java api提交自定义hadoop 作业
通过API操作之前要先了解几个基本知识 一.hadoop的基本数据类型和java的基本数据类型是不一样的,但是都存在对应的关系 如下图 如果需要定义自己的数据类型,则必须实现Writable hado ...
- SpringMVC处理MySQL BLOB字段的下载
任务: uos.docfile的content字段是longblob类型,通过Web点击链接能下载到存储在这个字段里的文件.Web点击链接类似如下形式: http://localhost:8080/d ...
- Android SQLiteDatabase中query、insert、update、delete方法参数说明
1.SQLiteDataBase对象的query()接口: public Cursor query (String table, String[] columns, String selection, ...
- PHP中session详解
SESSION 的数据保存在哪里呢? 当然是在服务器端,但不是保存在内存中,而是保存在文件或数据库中. 默认情况下,PHP.ini 中设置的 SESSION 保存方式是 files(session ...
- react-native-router-flux 页面跳转与传值
1.正向跳转假设情景:从Home页跳转到Profile页面,Profile场景的key值为profile 不带参数: Actions.profile 带参数: Actions.profile({'ke ...
- 微软在GitHub上开放源代码
https://github.com/MSOpenTech 点击链接:openFrameworks :https://github.com/openframeworks/openFrameworks ...
- Java Learning Path(四) 方法篇
Java Learning Path(四) 方法篇 Java作为一门编程语言,最好的学习方法就是写代码.当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类 ...
- jdk1.6 升级到 jdk1.7
将 jdk1.6 升级到 jdk1.7 下载jdk-7u11-linux-x64.tar.gz tar zxvf jdk-7u11-linux-x64.tar.gz mkdir /usr/l ...
- Ubuntu Server 命令行下显示中文乱码(菱形)解决办法
如果Ubuntu Server在安装过程中,选择的是中文(很多新手都会在安装时选择中文,便于上手),这样在完成安装后,系统默认的语言将会是中文zh_CN.UTF- 8.但问题是我们安装的是服务器,只需 ...
- 【优才原创】Android的拖放机制
优才网 [优才原创]Android的拖放机制 2016-04-18 优才学院 优才网 一.拖放机制概述 ² 拖放操作是手指触摸屏幕上的某一对象.然后拖动该对象.最后在屏幕的某个位置释放该对象并运行某种 ...