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),找出单调递增最长子序 ...
随机推荐
- poj 1286 Necklace of Beads & poj 2409 Let it Bead(初涉polya定理)
http://poj.org/problem?id=1286 题意:有红.绿.蓝三种颜色的n个珠子.要把它们构成一个项链,问有多少种不同的方法.旋转和翻转后同样的属于同一种方法. polya计数. 搜 ...
- UEFI是什么?与BIOS的区别在哪里?UEFI详解!
前几天在帮同事小何笔记本电脑安装64位 Windows 7 的时候,遇到一个从来没有碰到过的问题,使用光盘安装时,提示:Windows无法安装到这个磁盘.选中的磁盘具有MBR分区表.在EFI系统上,W ...
- VB 中定义FileSystemObject对象,要先添加对象
存取文件的方法有很多种,可以使用上述VB提供的函数,使用Windows API函数等等,但是最简单的方法是使用FileSystemObject对象. 1.使用FileSystemObject对象 F ...
- Oracle查询备注信息
查询表的备注信息: SELECT TABLE_NAME, TABLE_TYPE, COMMENTS FROM USER_TAB_COMMENTS WHERE TABLE_NAME = 'MR_DEPT ...
- iphone openssh
安装openssh 用户名:默认是 root 密码:默认是 alpine 修改登陆密码:passwd
- 〖Linux〗zigbee实验之cc2430的cc debugger固件升级实录
开发环境:Windows XP 1. (Trouble)一开始,使用IAR提示此设备不可使用(意味着无法下载程序): 2. (Search)通过一番的仔细查找,发现是cc debugger的Evalu ...
- Linux内核3.11的socket busy poll机制避免睡眠切换
Linux的网络协议栈很独立,上下通过两个接口分别和用户态以及设备相连.也能够看作是北向和南向接口...北向通过socket接口,南向通过qdisc接口(你能够觉得是上层的netdev queue,对 ...
- HTTP协议详解之请求篇
•HTTP请求由3部分组成:请求行.消息报头.请求正文. 1)请求行以一个方法符号开头,以空格分开,后面跟随请求的URI和协议的版本,格式:Method Request-URI HTTP-Versio ...
- Linux 系统访问控制列表ACL
常见的文件系统的一般权限(rwx).特殊权限(SUID,SGID,STICK).隐藏权限(chattr)其实有个共性——权限是针对某一类用户设置的.而如果希望对某个指定的用户进行单独的权限控制,那么就 ...
- Android UI-实现底部切换标签(fragment)
Android UI-实现底部切换标签(fragment) 前言 本篇博客要分享的一个UI效果--实现底部切换标签,想必大家在一些应用上面遇到过这样的效果了,最典型的就是微信了,能够左右滑动切换页面. ...