首页 > 其他 > 详细

hdu5461 Largest Point(沈阳网赛)

时间:2015-09-24 14:14:21      阅读:121      评论:0      收藏:0      [点我收藏+]

Largest Point

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


Problem Description
Given the sequence A技术分享 with n技术分享 integers t技术分享1技术分享,t技术分享2技术分享,?,t技术分享n技术分享技术分享. Given the integral coefficients a技术分享 and b技术分享. The fact that select two elements t技术分享i技术分享技术分享 and t技术分享j技术分享技术分享 of A技术分享 and i≠j技术分享 to maximize the value of at技术分享2技术分享i技术分享+bt技术分享j技术分享技术分享, 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×10技术分享6技术分享), a (0≤|a|≤10技术分享6技术分享)技术分享 and b (0≤|b|≤10技术分享6技术分享)技术分享. The second line contains n技术分享 integers t技术分享1技术分享,t技术分享2技术分享,?,t技术分享n技术分享技术分享 where 0≤|t技术分享i技术分享|≤10技术分享6技术分享技术分享 for 1≤i≤n技术分享.

The sum of n技术分享 for all cases would not be larger than 5×10技术分享6技术分享技术分享.
 

 

Output
The output contains exactly T技术分享 lines.
For each test case, you should output the maximum value of at技术分享2技术分享i技术分享+bt技术分享j技术分享技术分享.
 

 

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
题解:
ax2和bx分开考虑;
代码:
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<math.h>
 4 #define MAX(x,y)(x>y?x:y)
 5 #define F for(int i=0;i<n;i++)
 6 const int MAXN=5000010;
 7 const int INF=0x3f3f3f3f;
 8 int m[MAXN],vis[MAXN];
 9 int main(){
10     int T;
11     int n,a,b,flot=0;
12     scanf("%d",&T);
13     while(T--){
14         memset(vis,0,sizeof(vis));
15         scanf("%d%d%d",&n,&a,&b);
16         long long sum=0,x,k;//x?long long 
17         F scanf("%d",m+i);
18         if(a>0){
19             x=-INF;
20             F if(x<fabs(m[i]))x=fabs(m[i]),k=i;
21             vis[k]=1;
22             sum+=a*x*x;
23         }
24         else if(a<0){
25             x=INF;
26                 F if(x>fabs(m[i]))x=fabs(m[i]),k=i;
27                 vis[k]=1;
28             sum+=a*x*x;
29         }
30         if(b>0){
31              x=-INF;
32             F if(x<m[i]&&!vis[i])x=m[i],k=i;
33             vis[k]=1;
34             sum+=b*x;
35         }
36         else if(b<0){
37              x=INF;
38                 F if(x>m[i]&&!vis[i])x=m[i],k=i;
39                 vis[k]=1;
40             sum+=b*x;
41         }
42         printf("Case #%d: %lld\n",++flot,sum);
43     }
44     return 0;
45 }
46 /*#include<stdio.h>
47 #include<algorithm>
48 #include<math.h>
49 #define MAX(x,y)(x>y?x:y)
50 #define js(x,y)(a*x*x+b*y)
51 using namespace std;
52 const int MAXN=5000010;
53 const int INF=0x3f3f3f3f;
54 int m[MAXN],ml[MAXN];
55 int main(){
56     int T,a,b,n,t[5],ans;
57     scanf("%d",&T);
58     for(int i=1;i<=T;i++){
59         scanf("%d%d%d",&n,&a,&b);
60         for(int j=0;j<n;j++)scanf("%d",m+j),ml[j]=fabs(m[j]);
61             t[0]=*max_element(m,m+n);t[1]=*min_element(m,m+n);
62             *max_element(m,m+n)=-INF;
63             t[2]=*max_element(m,m+n);
64             *min_element(m,m+n)=INF;
65             *min_element(m,m+n)=INF;
66             t[3]=*min_element(m,m+n);
67             ans=-INF;
68             printf("%d %d %d %d\n",t[0],t[1],t[2],t[3]);
69             if(a>=0&&b>=0){
70                 if(fabs(t[1])>=fabs(t[0]))
71                     ans=js(t[1],t[0]);
72                 else
73                     ans=MAX(js(t[0],t[2]),js(t[2],t[0]));
74             }
75             else if(a>=0&&b<0){
76                 if(fabs(t[0])>=fabs(t[1]))
77                     ans=js(t[0],t[1]);
78                 else
79                     ans=MAX(js(t[1],t[3]),js(t[3],t[1]));
80             }
81             else{
82                 int x=*min_element(ml,ml+n);
83                 
84             }
85             printf("Case #%d: %d\n",i,ans);
86     }
87     return 0;
88 }*/

 

hdu5461 Largest Point(沈阳网赛)

原文:http://www.cnblogs.com/handsomecui/p/4834973.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!