hdu 5461(2015沈阳网赛 简单暴力) Largest Point

题目;http://acm.hdu.edu.cn/showproblem.php?pid=5461

题意就是在数组中找出a*t[i]*t[i]+b*t[j]的最大值,特别注意的是这里i和i不能相等,想不到的是居然直接暴力排序都能过,而且这题的数据很水,好多有bug的代码都能过

但是我们要对自己要求严一点,尽量吧各种情况考虑到位,如果下面的代码还有不妥,欢迎指正

 #include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
ll max(ll x,ll y) {
if (x>y) return x;
else return y;
}
ll a[];
int main()
{
ll t,q,i,n,c,w,b,num1,num2;
while (~scanf("%I64d",&t))
{
ll ans=;
while (t--){
scanf("%I64d %I64d %I64d",&n,&c,&b);
q=;
for (i=;i<=n;i++)
scanf("%I64d",&a[i]);
sort(a+,a+n+);
for (i=;i<=n;i++)
if (fabs(a[i])<q) q=fabs(a[i]),w=i;
printf("Case #%I64d: ",ans++);
if (c<&&b<)
{
if (w!=) printf("%I64d\n",c*a[w]*a[w]+b*a[]);
else
{
num1=c*a[]*a[]+b*a[];
num2=c*a[]*a[]+b*a[];
printf("%d\n",max(num1,num2));
}
continue;
}
else if (c>&&b>)
{
printf ("%I64d\n",max(max(c*a[n]*a[n]+b*a[n-], c*a[n-]*a[n-]+b*a[n]), c*a[]*a[]+b*a[n]));
continue;
}
else if (c>=&&b<=)
{
printf ("%I64d\n",max(max(c*a[n]*a[n]+b*a[], c*a[]*a[]+b*a[]), c*a[]*a[]+b*a[]));
continue;
}
else if (c<=&&b>=)
{
if (w!=n) printf("%I64d\n",c*a[w]*a[w]+b*a[n]);
else
{
num1=c*a[n]*a[n]+b*a[n-];
num2=c*a[n-]*a[n-]+b*a[n];
printf("%d\n",max(num1,num2));
}
continue;
}
}
}
return ;
}
上一篇:2019沈阳网赛树形dp


下一篇:2018沈阳网赛F--上下界网络流