hdu 1950
来源:互联网 发布:中国银行安全控件mac 编辑:程序博客网 时间:2024/06/07 15:57
题目概述
给定N个数num,求其最长上升子序列长度
时限
1000ms/2000ms
输入
第一行正整数times,代表数据组数,每组数据第一行正整数N,其后N行,每行正整数num
限制
1<=N<40000
输出
每行一个数,最长上升子序列长度
样例输入
4
6
4
2
6
3
1
5
10
2
3
4
5
6
7
8
9
10
1
8
8
7
6
5
4
3
2
1
9
5
8
9
2
3
1
7
4
6
样例输出
3
9
1
4
讨论
dp,最长上升子序列长度,显然题目不是这么描述的,不过和hdu 1025几乎是一致的类型,于是这里就直接把模型写上了
只是数据略大,加上借用了stl,因而慢了一些
题解状态
62MS,1576K,702 B,G++
题解代码
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;#define INF 0x3f3f3f3f #define MAXN 40003#define memset0(a) memset(a,0,sizeof(a))#define EPS 1e-6int N;//数字总数int stk[MAXN], top;//stack 模拟栈及其栈顶int fun(){ scanf("%d", &stk[top++]);//input//吞进去第一个数使栈非空 for (int p = 1; p < N; p++) { int num; scanf("%d", &num);//input if (num > stk[top - 1]) stk[top++] = num; else *lower_bound(stk, stk + top, num) = num; } return top;}int main(void){ //freopen("vs_cin.txt", "r", stdin); //freopen("vs_cout.txt", "w", stdout); int times; scanf("%d", ×);//input while (times--) { scanf("%d", &N);//input printf("%d\n", fun());//output memset0(stk); top = 0; }}
EOF
0 0
- hdu 1950
- hdu 1950
- HDU 1950
- hdu 1950
- HDU 1950 Bridging signals
- hdu 1950 Bridging signals
- hdu-1950-Bridging signals
- HDU 1950 Bridging signals
- hdu 1950 Bridging signals
- hdu-1950 Bridging signals
- Hdu 1950 bridging signals
- HDU 1950 Bridging signals
- hdu 1950,DP
- HDU:1950 Bridging signals
- hdu 1950 Bridging signals
- HDU 1950 Bridging signals
- HDU 1950 Bridging signals
- hdu 1950 java解法
- testing
- 39 BlockManager深入理解
- 简述操作系统中的作业、进程、线程、管程
- 使用Github+Jekyll制作自己的博客
- 面向对象六大原则
- hdu 1950
- private static final long serialVersionUID = 1L 干什么的?
- poj2186 Popular Cows
- Java访问控制
- Html-列表基础记录
- 使用AmazeUI做的一个表单案例(验证)
- 进程间通信如何实现
- 个人感想
- 信号量与PV操作