南京理工大学第八届程序设计大赛(校外镜像) - sequence (贪心)
2016-04-18 12:45
399 查看
sequence
Time Limit: 1000MS
Memory Limit: 65536KB
Description
将一个给定的数列,拆分成K个不降序列,每个数出现且只出现一次,且在各序列中各个数相对于原数列的相对顺序不变。如7 6 9 8 10可以拆成 7 9 10和6 8。求最小的K值。Input
第一行输入一个整数T(1 <= T <= 100),表示接下来T组测试数据,每组两行,第一行为n,代表数列长度(1<=n<=10000)接下来一行有n个数,空格分隔(每个数<=50000)。Output
对每组数据输出一个最小的K值。
Sample Input
25
7 6 9 8 10
5
5 4 3 2 1
Sample Output
25
标准题解:
经典贪心问题,从前往后扫描原数组,每到一个数,找个当前最大值最大的不降数组加入其中,否则新建一个不降数组。不降子序列包括相等的情况….没注意WA了几次,惜败。
交的时候担心会出负数,所以标记值取了-50000。
就酱。
代码:
include <iostream> using namespace std; int main() { int t; cin >> t; long long int list[10050] = {0}; while(t--) { int n ; cin >> n; for(int i = 0; i < n; i++) cin >> list[i]; /*for(int i = 0; i < n; i++) cout << list[i] << " "; cout << endl;*/ int max = -50000; int count = 0; for(int i = 0; i < n; i++) { if(list[i] != -50000) { count++; for(int j = i; j < n; j++) { if(list[j] >= max) { max = list[j]; list[j] = -50000; } } max = -50000; } } cout << count <<endl; } return 0; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性