程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> HDU 5461Largest Point

HDU 5461Largest Point

編輯:關於C++

 

Largest Point

Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 527 Accepted Submission(s): 228



Problem Description Given the sequence A with n integers t1,t2,?,tn. Given the integral coefficients a and b. The fact that select two elements ti and tj of A and i≠j to maximize the value of at2i+btj, becomes the largest point.
Input An positive integer T, indicating there are T test cases.
For each test case, the first line contains three integers corresponding to n (2≤n≤5×106), a (0≤|a|≤106) and b (0≤|b|≤106). The second line contains n integers t1,t2,?,tn where 0≤|ti|≤106 for 1≤i≤n.

The sum of n for all cases would not be larger than 5×106.
Output The output contains exactly T lines.
For each test case, you should output the maximum value of at2i+btj.
Sample Input
2

3 2 1
1 2 3

5 -1 0
-3 -3 0 3 3

Sample Output
Case #1: 20
Case #2: 0

 

 

簡單題 求a*ti*ti+b*tj(i!=j)的最大值

 

 

#include 
#include 
#include 
#include 
#include 
#include
#include 
#include 
#include 
#include 
using namespace std;

int tz[5000050],tf[5000050];
bool compare(int a,int b)
{
    return a=0)
                tz[tzlen++]=num;
            else tf[tflen++]=-num;
        }
        sort(tz,tz+tzlen,compare);
        sort(tf,tf+tflen,compare);
        long long Max;
        if(a>=0&&b>=0)
        {
            Max=a*tz[tzlen-1]*tz[tzlen-1]+b*tz[tzlen-2];
            Max=max(Max,a*tz[tzlen-2]*tz[tzlen-2]+b*tz[tzlen-1]);
            Max=max(Max,a*tf[tflen-1]*tf[tflen-1]+b*tz[tzlen-1]);
        }else if(a>=0&&b<0)
        {
            Max=-b*tf[tflen-1]+a*tz[tzlen-1]*tz[tzlen-1];
            Max=max(Max,-b*tf[tflen-1]+a*tf[tflen-2]*tf[tflen-2]);
            Max=max(Max,-b*tf[tflen-2]+a*tf[tflen-1]*tf[tflen-1]);
        }else if(a<0&&b>=0)
        {
            Max=a*tz[0]*tz[0]+b*tz[tzlen-1];
            Max=max(Max,a*tf[0]*tf[0]+b*tz[tzlen-1]);
        }else
        {
            Max=-b*tf[tflen-1]+a*tz[0]*tz[0];
            Max=max(Max,-b*tf[tflen-1]+a*tf[0]*tf[0]);
        }

        printf(Case #%d: %lld
,tt++,Max);
    }
}


 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved