zoukankan      html  css  js  c++  java
  • hdu 5532

    input

    1<=T<=2000

    2<=n<=10e5

    a1 a2 ... an 1<=ai<=10e5

    最多二十个n>1000

    output

    能否从数组中移除一个数使数组变为升序或降序,能输出YES,不能输出NO

    做法,用后一个数减前一个数,统计正数的个数和负数的个数,如果全部为正或全部为负肯定可以,一个正或者一个负可能可以,如果这个和前一个或者后一个相加能变成全部正或全部负便可以,因为x1=a[i]-a[i-1],x2=a[i+1]-a[i],则a[i+1]-a[i-1]=x1+x2

     1 #include <cstdio>
     2 #include <queue>
     3 #include <cstring>
     4 #include <iostream>
     5 #include <cstdlib>
     6 #include <algorithm>
     7 #include <vector>
     8 #include <map>
     9 #include <set>
    10 #include <ctime>
    11 
    12 using namespace std;
    13 
    14 int T,n,a,d[100010];
    15 int main()
    16 {
    17 //    freopen("/home/user/桌面/in","r",stdin);
    18     scanf("%d",&T);
    19     while(T--)
    20     {
    21         int les=0,gre=0,i,t,fa=-1,fb=-1;
    22         scanf("%d%d",&n,&a);
    23         for(i=0;i<n-1;i++)
    24         {
    25             scanf("%d",&t);
    26             d[i]=t-a;
    27             if(fa==-1&&d[i]<0) fa=i;
    28             if(fb==-1&&d[i]>0) fb=i;
    29             if(d[i]==0)
    30             {
    31                 les++;
    32                 gre++;
    33             }
    34             else d[i]>0?gre++:les++;
    35             a=t;
    36         }
    37         //for(int i=0;i<n-1;i++) printf("%d ",d[i]);printf("
    ");
    38         if(gre==n-1||les==n-1)
    39         {
    40             puts("YES");
    41             continue;
    42         }
    43         if(gre==n-2)
    44         {
    45             if(fa==0||fa==n-2||d[fa]+d[fa-1]>=0)
    46             {
    47                 puts("YES");
    48                 continue;
    49             }
    50             else if(fa<n-2&&d[fa]+d[fa+1]>=0)
    51             {
    52                 puts("YES");
    53                 continue;
    54             }
    55         }
    56         if(les==n-2)
    57         {
    58             if(fb==0||fb==n-2||d[fb]+d[fb-1]<=0)
    59             {
    60                 puts("YES");
    61                 continue;
    62             }
    63             else if(fb<n-2&&d[fb]+d[fb+1]<=0)
    64             {
    65                 puts("YES");
    66                 continue;
    67             }
    68         }
    69         puts("NO");
    70     }
    71     //printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);
    72     return 0;
    73 }
    View Code
  • 相关阅读:
    js 脚本学习 索引
    nodejs 学习索引
    oracle 学习 笔记
    githut 的 管理 使用
    sublime text 插件记录
    web 学习 相关索引
    wpf 自定义 无边框 窗体 resize 实现
    vs 效率工具
    ANDROID开发实用小工具
    iOS开发之Core Animation
  • 原文地址:https://www.cnblogs.com/cdyboke/p/4929376.html
Copyright © 2011-2022 走看看