zoukankan      html  css  js  c++  java
  • uva 11039 Building designing

    https://vjudge.net/problem/UVA-11039

    题意:

    给出n个不相同的非0整数,要求从其中选出一些数组成一个数列,这个数列绝对值递增但是正负相间,输出最长序列的长度。

    思路:

    先按照绝对值大小排序,然后按照正负相间选就行了。

    代码:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <algorithm>
     4 using namespace std;
     5 
     6 int a[500000+5];
     7 
     8 int mabs(int b)
     9 {
    10     return b >= 0 ? b : -b;
    11 }
    12 
    13 bool cmp(int b,int c)
    14 {
    15     return mabs(b) < mabs(c);
    16 }
    17 
    18 int main()
    19 {
    20     int t;
    21 
    22     scanf("%d",&t);
    23 
    24     while (t--)
    25     {
    26         int n;
    27 
    28         scanf("%d",&n);
    29 
    30         for (int i = 0;i < n;i++)
    31             scanf("%d",a + i);
    32 
    33         sort(a,a+n,cmp);
    34 
    35         int cnt = 1;
    36         int pre = a[0];
    37 
    38         for (int i = 1;i < n;i++)
    39         {
    40             if (pre < 0 && a[i] > 0)
    41             {
    42                 pre = a[i];
    43                 cnt++;
    44             }
    45 
    46             if (pre > 0 && a[i] < 0)
    47             {
    48                 pre = a[i];
    49                 cnt++;
    50             }
    51         }
    52 
    53         printf("%d
    ",cnt);
    54     }
    55 
    56     return 0;
    57 }
  • 相关阅读:
    反射
    jQuery之Dom操作
    Jquery学习开篇
    c#构造函数
    c#之委托
    DataX启动步骤解析
    JobContainer
    DataX 启动配置
    DataX源码分析(2)
    DataX源码分析(1)
  • 原文地址:https://www.cnblogs.com/kickit/p/7920399.html
Copyright © 2011-2022 走看看