ny214 单调递增子序列(二) 动态规划
单调递增子序列(二)
- 描述
-
给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长子序列,并求出其长度。
如:1 9 10 5 11 2 13的最长单调递增子序列是1 9 10 11 13,长度为5。
- 输入
- 有多组测试数据(<=7)
每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的下一行里有n个整数,表示数列中的所有元素.每个整形数中间用空格间隔开(0<n<=100000)。
数据以EOF结束 。
输入数据保证合法(全为int型整数)! - 输出
- 对于每组测试数据输出整形数列的最长递增子序列的长度,每个输出占一行。
- 样例输入
-
7
1 9 10 5 11 2 13
2
2 -1 - 样例输出
-
5
1
常规方法,会超时的,AC代码一:#include<stdio.h>
#include<string.h>
int main()
{
int b[],a[];
int i,j,n,t,max;
while(scanf("%d",&t)!=EOF)
{ max=;
memset(b,,sizeof(b));
for(i=;i<t;i++)
scanf("%d",&a[i]);
b[] = a[];
for(i = , j = ; i < t; i++)
{ if(a[i]> b[j-])//判断如果出现后面的有大于前面的数就保存起来;
b[j++] = a[i];//保存的同时,j的值也在不断的增大,当保存到最后,j的值就是最后的最大长度了;
else{
for(int k = ; k < j; k++)
{
if(a[i] < b[k]){
b[k] = a[i];
break;
}
}
}
}
printf("%d\n",j);
}
return ;
}AC代码二:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int dp[];
int main()
{
int i,a,t,k,j,n,mm;
while(scanf("%d",&n)!=EOF)
{ k=;memset(dp,,sizeof(dp));mm=;
cin>>dp[];
for(i=;i<n;i++)
{
scanf("%d",&a);
if(a<dp[])
dp[]=a;
else if(a>dp[k-])
dp[k++]=a;
else
{
for(j=;j<k;j++)
{
if(a<dp[j] && a>dp[j-])
{dp[j]=a;break;}
else if(a<dp[j])
break;
}
}
}
cout<<k<<endl;
}
return ; }超时的代码:
#include<stdio.h>
#include<string.h>
//int b[100010]={0};
int main()
{
int a[],b[];
int i,j,n,t,max;
while(scanf("%d",&t)!=EOF)
{max=;
memset(b,,sizeof(b));
scanf("%d",&a[]);
for(i=;i<t;i++)
{
scanf("%d",&a[i]);
for(j=;j<i;j++)
if(a[i]>a[j] && b[j]+>b[i])
b[i]++;
// printf("%d ",b[i]);
if(b[i]>max)
max=b[i];
}
/*for(i=0;i<t;i++)
{if(b[i]>max)
max=b[i];
}*/
printf("%d\n",max+);
}
return ;
}
ny214 单调递增子序列(二) 动态规划的更多相关文章
- nyist oj 214 单调递增子序列(二) (动态规划经典)
单调递增子序列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 ,a2...,an}(0<n<=100000).找出单调递增最长子序列,并求出其长度 ...
- nyoj 单调递增子序列(二)
单调递增子序列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长 ...
- nyoj 214 单调递增子序列(二)
单调递增子序列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 ,a2...,an}(0<n<=100000),找出单调递增最长子序列,并求出其长度. ...
- nyoj 214——单调递增子序列(二)——————【二分搜索加dp】
单调递增子序列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长 ...
- nyoj_214_单调递增子序列(二)_201403182131
单调递增子序列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长 ...
- nyoj 214 单调递增子序列(二) 【另类dp】
单调递增子序列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 ,a2...,an}(0<n<=100000),找出单调递增最长子序列.并求出其长度 ...
- NYOJ-214 单调递增子序列(二) AC 分类: NYOJ 2014-01-31 08:06 233人阅读 评论(0) 收藏
#include<stdio.h> #include<string.h> int len, n, i, j; int d[100005], a[100005]; int bin ...
- NYOJ-214 单调递增子序列(二) TLE 分类: NYOJ 2014-01-28 22:57 171人阅读 评论(0) 收藏
#include<stdio.h> #include<stdlib.h> #define max(x,y) x>y?x:y #define MAXX 100005 int ...
- nyoj--214--单调递增子序列(二)(二分查找+LIS)
单调递增子序列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长子序 ...
随机推荐
- ipa 打包遇到的坑
1.xcode 打包 并上传至 appstore 审核 2.预留邮箱 收取 appstore 的审核结果 3.审核通过以后,通过 iTunes Connect 上传正式文件至 appstore ...
- /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 错误:
在安装tomcat时报了错: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 本机环境: [root@AY1405 ...
- 变量名解析:LEGB原则
# -*- coding: cp936 -*- #python 27 #xiaodeng #变量名解析:LEGB原则 ''' L-----local 局部名字空间 E-----enclosing 直接 ...
- PHP-Open Flash Chart注意事项
1.在html页面必须src正确的swfobject.js的路径(可以用Firebug查看绝对路径是否正确) 2.在html页面必须指定正确的swfobject使用时的open-flash-chart ...
- LinkedHashMap插入无序且链式操作
Iterator<Entry<Integer, Integer>> ite=lhmap.entrySet().iterator(); ite.next(); ite.remov ...
- BIND9源码分析之acl 的实现
BIND配置中一大堆一大堆的acl,什么allow-query, allow-recursion, allow-update还有view的match-clients等等等等. acl中的主要存储的就是 ...
- python学习笔记——进程间通信方式对比
通信方式对比 管道 消息队列 共享内存 信号 开辟空间 内存 内存 内存 不开辟额外空间 读写方式 双向/单向(信息流) 先进先出(消息体) 操作内存(数值数组) 发送处理信号 效率 一般 一般 ...
- PLSQL_动态语句的解析(概念)
2014-06-02 Created By BaoXinjian
- Linux内核(9) - 精华版 之 方法论
到目前为之,博客上分享的精华篇都可以归为方法论的范畴,在很多时候,都是方法论要比细节紧要得多.而这些精华篇又可细分为三个专题:Linux大史记:内核学习的方法论:驱动开发的方法论. Linux大史记 ...
- Python asin() 函数
描述 asin() 返回x的反正弦弧度值. 语法 以下是 asin() 方法的语法: import math math.asin(x) 注意:asin()是不能直接访问的,需要导入 math 模块,然 ...