uva11039 Building Designing

简介: 题意:给出n个数,请按照他们绝对值的递增顺序排序,且相邻元素不能有相同符号(必须一个大于0,一个小于0),问这样操作后最多有多少个元素 分析:先调用sort排序然后逐个判断相邻两个元素的乘积是否小于0.

题意:给出n个数,请按照他们绝对值的递增顺序排序,且相邻元素不能有相同符号(必须一个大于0,一个小于0),问这样操作后最多有多少个元素

分析:先调用sort排序然后逐个判断相邻两个元素的乘积是否小于0.  注意结果会溢出,不能用int,可以用double,当然用bool型变量标记也可以

 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <vector>
 4 #include <algorithm>
 5 #include <math.h>
 6 #define zz
 7 using namespace std;
 8 bool cmp(double a, double b){
 9     return fabs(a)<fabs(b);
10 }
11 int main(){
12 #ifndef zz
13     freopen("in.txt", "r", stdin);
14 #endif
15     int p;
16     scanf("%d", &p);
17     while(p--){
18         vector<double>v;
19         int n;
20         scanf("%d", &n);
21         int i;
22         for(i=0; i<n; i++){
23             int x;
24             scanf("%d", &x);
25             v.push_back(x);
26         }
27         sort(v.begin(), v.end(), cmp);
28         double jar = v[0];
29         int cnt = 1;
30         for(i=1; i<v.size(); i++){
31             if(v[i]*jar<0){
32                 cnt++;
33                 jar = v[i];
34             }
35         }
36         printf("%d\n", cnt);
37     }
38     return 0;
39 }

 

目录
相关文章
uva 11991 - Easy Problem from Rujia Liu?
这个题目的意思是输入n个数,m组询问,每组询问包含两个整数k,v,意思是询问整数v第k次出现的位置。
40 0
UVa1531 - Problem Bee
UVa1531 - Problem Bee
51 0
UVa389 - Basically Speaking
UVa389 - Basically Speaking
36 0
UVa11565 - Simple Equations
UVa11565 - Simple Equations
51 0
|
机器学习/深度学习 自然语言处理
|
人工智能 Java 安全
HDU 1039 Easier Done Than Said?
Easier Done Than Said? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12751    Accepted Subm...
801 0