uva - 11039 - Building designing(qsort快排)
2014-02-03 21:13
204 查看
题意:水题,有n个绝对值各不相同的非0整数,选出尽量多的数排成一个序列,使得正负号交替且绝对值递增。输出最长序列长度。
方法:先用qsort按照绝对值递增排序,然后判断数组中后一个位置的数是不是和这个数符号相反,是的话加count加1。注意1.count开始为1;2.当n个数全为正或者全为负时输出确实应该是1,当时不确定,AC后确定了。
方法:先用qsort按照绝对值递增排序,然后判断数组中后一个位置的数是不是和这个数符号相反,是的话加count加1。注意1.count开始为1;2.当n个数全为正或者全为负时输出确实应该是1,当时不确定,AC后确定了。
#define Local #include <iostream> #include <iomanip> #include <string> #include <cstring> #include <cstdio> #include <queue> #include <stack> #include <algorithm> #include <cmath> using namespace std; #define MAX 500000 int num[MAX]; int cmp(const void *a, const void *b) { int m = abs(*(int *)a), n = abs(*(int *)b); return m - n; } int main() { #ifdef Local freopen("a.in", "r", stdin); freopen("a.out", "w", stdout); #endif int t = 0, n = 0; cin >> t; while (t--) { int count = 1; memset(num, 0, sizeof(num)); cin >> n; int i = 0; for (i = 0; i < n; i++) cin >> num[i]; qsort(num, n, sizeof(num[0]), cmp); for (i = 0; i < n-1; i++) { if (num[i] < 0 && num[i+1] > 0) count++; else if (num[i] > 0 && num[i+1] < 0) count++; } cout << count << endl; } }
相关文章推荐
- UVa 11039 Building designing (求按绝对值升序最长正负交替数列长度)
- uva 11039
- uva10132 字符串数组的qsort排序技巧
- UVA 11039
- UVA-11039-Building designing
- UVA11039 - Building designing
- uva11039-Building designing
- UVa 11039 - Building designing
- UVa 11039 Building designing (模拟)
- UVA - 11039 Building designing
- UVa 11039 - Building Designing
- uva11039 - Building designing
- UVA - 400 Unix ls qsort的用法
- uva 11039
- uva11039 -Building designing
- UVA - 10420 - List of Conquests (排序 - qsort、STL)
- Uva - 11039 - Building designing
- Uva Oj 11039 - Building designing
- uva 11039 - Building designing(贪心)
- UVA 11039 - Building designing(DP)