zoukankan      html  css  js  c++  java
  • HDU5461 Largest Point(暴力)

    这题第一眼就想到暴力。。

    枚举每一个ti,就能确定tj,tj一定是剩下数最大或最小的。为了求tj就要求出数列最大最小次大次小。时间复杂度O(n)。

    感觉暴力挺有趣的。

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 __int64 arr[5500000];
     5 int main(){
     6     int t;
     7     scanf("%d",&t);
     8     for(int cse=1; cse<=t; ++cse){
     9         __int64 n,a,b;
    10         scanf("%I64d%I64d%I64d",&n,&a,&b);
    11         for(int i=1; i<=n; ++i){
    12             scanf("%I64d",arr+i);
    13         }
    14 
    15         __int64 max1=-1000001,max2=-1000001,min1=1000001,min2=1000001;
    16         int maxi,mini;
    17         for(int i=1; i<=n; ++i){
    18             if(max1<arr[i]) max1=arr[i], maxi=i;
    19             if(min1>arr[i]) min1=arr[i], mini=i;
    20         }
    21         for(int i=1; i<=n; ++i){
    22             if(i!=maxi && max2<arr[i]) max2=arr[i];
    23             if(i!=mini && min2>arr[i]) min2=arr[i];
    24         }
    25 
    26         __int64 res=a*arr[1]*arr[1]+b*arr[2];
    27         for(int i=1; i<=n; ++i){
    28             __int64 tmp=arr[i]*arr[i]*a;
    29 
    30             if(max1==arr[i]) res=max(res,tmp+max2*b);
    31             else res=max(res,tmp+max1*b);
    32 
    33             if(min1==arr[i]) res=max(res,tmp+min2*b);
    34             else res=max(res,tmp+min1*b);
    35         }
    36         printf("Case #%d: %I64d
    ",cse,res);
    37     }
    38     return 0;
    39 }
  • 相关阅读:
    nodejs获取服务器数据到页面
    Struts 2
    JQuery
    JDBC
    Hiberbate
    EasyUi
    JavaScript
    利用 HashSet 去过滤元素是否重复
    HTML
    MySQL
  • 原文地址:https://www.cnblogs.com/WABoss/p/4852017.html
Copyright © 2011-2022 走看看