• UVA11039


    题意:
         给你一个序列,由n个数字组成,每个数字的绝对值都不相同,然后让你从这n个数中拿出一些数,组成一个绝对值递增并且正负交替的最大序列,问组成的最大序列的最大长度是多少?


    思路:
          比较简单,突破口是所有数字的绝对值都不同,那么我们直接模拟就行了,直接按绝对值sort一遍,然后第一个默认是找出序列的第一个,然后直接看看有多少正负交替的就行了,具体看代码。


    #include<stdio.h>
    #include<algorithm>


    #define N 500000 + 10


    using namespace std;


    int num[N];


    int abss(int x)
    {
       return x > 0 ? x : -x;
    }


    bool camp(int a ,int b)
    {
       return abss(a) < abss(b);
    }


    int main ()
    {
       int n ,i ,Ans ,nowzf ,t;
       scanf("%d" ,&t);
       while(t--)
       {  
          scanf("%d" ,&n);
          for(i = 1 ;i <= n ;i ++)
          scanf("%d" ,&num[i]);
          sort(num + 1 ,num + n + 1 ,camp);
          num[1] < 0 ? nowzf = 1 : nowzf = -1;
          for(Ans = 0 ,i = 1 ;i <= n ;i ++)
          {
             if(num[i] >= 0 && nowzf < 0 || num[i] < 0 && nowzf > 0)
             {
                Ans ++;
                nowzf *= -1;
             }
          }
          printf("%d " ,Ans);
       }
       return 0;
    }
          
          







  • 相关阅读:
    延迟加载时发生no session错误的解决办法
    零零散散的一些知识点(一)
    零零散散的一些知识点(二)
    自己写的一个日历表
    js复制网址
    load方法在延迟加载时可能出现的错误。
    JSON基本介绍
    JBOSS4.0 JDBC数据源配置大全
    EJB学习笔记一
    Android程序完全退出的方法
  • 原文地址:https://www.cnblogs.com/csnd/p/12062657.html
Copyright © 2020-2023  润新知