Largest Point

Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)

Total Submission(s): 1102    Accepted Submission(s): 429

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 nintegers 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 b的两个值,然后给了一大堆t的值,问在这些t的值里面求最大的 at2i+btj.

分情况讨论,对于a大于零小于零,b大于零小于零。然后记录最大值 次大值 最小值 次小值 还有一个绝对值最小值,这五个值就够用了。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std; long long test, n, a, b;
long long i, j;
long long abs_min, max1, max2, min1, min2; int main()
{ long long temp;
cin >> test;
for (i = 1; i <= test; i++)
{
abs_min = 1000005;
max1 = -1000005;
max2 = -1000005;
min1 = 1000005;
min2 = 1000005; cin >> n >> a >> b; for (j = 1; j <= n; j++)
{
scanf("%lld",&temp); if (abs(temp) < abs_min)
{
abs_min = abs(temp);
}
if (temp > max1)
{
max2 = max1;
max1 = temp;
}
else if (temp > max2)
{
max2 = temp;
} if (temp < min1)
{
min2 = min1;
min1 = temp;
}
else if (temp < min2)
{
min2 = temp;
}
}
long long res;
if (a >= 0 && b>=0)
{
res = a*max1* max1 + b*max2;
res = max(res, a*min1 * min1 + b*max1);
}
else if (a >= 0 && b <= 0)
{
res = a*max1 * max1 + b*min1;
res = max(res, a*min1 * min1 + b*min2);
}
else if (a <= 0 && b <= 0)
{
if (min1 == abs_min)
{
res = a*abs_min*abs_min + b*min2;
}
else
{
res = a*abs_min*abs_min + b*min1;
}
}
else
{
if (max1 == abs_min)
{
res = a*abs_min*abs_min + b*max2;
}
else
{
res = a*abs_min*abs_min + b*max1;
}
}
cout << "Case #"<<i<<": "<<res<< endl;
} return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 5461:Largest Point的更多相关文章

  1. LeetCode之“排序”:Largest Number

    题目链接 题目要求: Given a list of non negative integers, arrange them such that they form the largest numbe ...

  2. HDU - 6409:没有兄弟的舞会(数学+思维)

    链接:HDU - 6409:没有兄弟的舞会 题意: 题解: 求出最大的 l[i] 的最大值 L 和 r[i] 的最大值 R,那么 h 一定在 [L, R] 中.枚举每一个最大值,那么每一个区间的对于答 ...

  3. POJ 3321:Apple Tree + HDU 3887:Counting Offspring(DFS序+树状数组)

    http://poj.org/problem?id=3321 http://acm.hdu.edu.cn/showproblem.php?pid=3887 POJ 3321: 题意:给出一棵根节点为1 ...

  4. hdu 5461 Largest Point 暴力

    Largest Point Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

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

    题目;http://acm.hdu.edu.cn/showproblem.php?pid=5461 题意就是在数组中找出a*t[i]*t[i]+b*t[j]的最大值,特别注意的是这里i和i不能相等,想 ...

  6. hdu 5461 Largest Point

    Thinking about it: 对于式子 a * ti * ti + b * tj,可以看作时有两部分构成 a * ti * ti 和 b * tj,如果整个式子要最大,则要求这两部分都要尽量大 ...

  7. HDU 5510:Bazinga(暴力KMP)

    http://acm.hdu.edu.cn/showproblem.php?pid=5510 Bazinga Problem Description   Ladies and gentlemen, p ...

  8. HDU 2732:Leapin' Lizards(最大流)

    http://acm.hdu.edu.cn/showproblem.php?pid=2732 题意:给出两个地图,蜥蜴从一个柱子跳跃到另外一个地方,那么这个柱子就可能会坍塌,第一个地图是柱子可以容忍跳 ...

  9. HDU 4289:Control(最小割)

    http://acm.hdu.edu.cn/showproblem.php?pid=4289 题意:有n个城市,m条无向边,小偷要从s点开始逃到d点,在每个城市安放监控的花费是sa[i],问最小花费可 ...

随机推荐

  1. MyISAM/Innodb的区别

    MyISAM是MySQL的默认数据库引擎(5.5版之前).虽然性能极佳,而且提供了大量的特性,包括全文索引.压缩.空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复.不 ...

  2. web页面的JS部分乱码了!!

    在引用的地方给出编码即可 <script type='text/javascript' src='/zbjc/resources/normal/index_page.js' charset=&q ...

  3. android数据的四种存储方式之一——SharedPreference

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...

  4. Day1-Luogu-2085

    题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个 ...

  5. C语言 Win32 获取显示设备信息

    函数 BOOL EnumDisplayDevicesA( LPCSTR lpDevice, DWORD iDevNum, PDISPLAY_DEVICEA lpDisplayDevice, DWORD ...

  6. 对于文章的字母、单词、短语,(无用词表)的检索Java代码实现

    日期:2019.5.9 博客期:073 星期四 今天软件工程课上,又做了测试,老师说我们的速度太慢了,实际上我也觉得自己很慢.老师说了这是我们的上一届的大二上半学期学习中的速度,所以呢?意思就是说我们 ...

  7. SciPy 输入输出

    章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...

  8. MQTT 协议学习:006-订阅主题 与 对应报文(SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK)

    背景 之前我们提到了怎么发布消息对应的报文:现在我们来看,订阅一个主题的报文是怎么样的. SUBSCRIBE - 订阅主题 客户端向服务端发送SUBSCRIBE报文用于创建一个或多个订阅.每个订阅注册 ...

  9. 51nod 1378:夹克老爷的愤怒 很好玩的一道树状dp

    1378 夹克老爷的愤怒 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  取消关注 夹克老爷逢三抽一之后,由于采用了新师爷的策略,乡民们叫苦不堪,开始组织 ...

  10. 实验吧——Recursive

    环境:win10,kali虚拟机 工具:ida 虚拟机打开看看,发现是ELF文件,运行一下,额没有什么发现. Ida打开看看,发现是在文件内部运行python解释器,百度搜索了一个基本上可以找到Py_ ...