hdu 5461 Largest Point 暴力
Largest Point
Time Limit: 1 Sec
Memory Limit: 256 MB
题目连接
http://acm.hdu.edu.cn/showproblem.php?pid=5461
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
HINT
题意
给你a,b,再给你n个数
然后让你求ati*ti+btj最大值是多少
题解:
我们是暴力做的,找到最大的两个数,最小的两个数,绝对值最大的两个数,绝对值最小的两个数
然后扔进一个vector里面,然后去重,然后暴力枚举的
但是还是怕tle,就分治了一下解法,数据小的话就直接n^2暴力枚举= =
代码:
- #include <iostream>
- #include <cstring>
- #include <cstdio>
- #include <algorithm>
- #include <cmath>
- #include <vector>
- #include <stack>
- #include <map>
- #include <set>
- #include <queue>
- #include <iomanip>
- #include <string>
- #include <ctime>
- #include <list>
- #include <bitset>
- typedef unsigned char byte;
- #define pb push_back
- #define input_fast std::ios::sync_with_stdio(false);std::cin.tie(0)
- #define local freopen("in.txt","r",stdin)
- #define pi acos(-1)
- using namespace std;
- const int maxn = 5e6 + ;
- long long a , b , ans , p[maxn];
- int vis[] , used[maxn] , n , sz;
- vector<long long>s;
- struct data
- {
- long long val;
- int idx;
- };
- data A[maxn] , B[maxn];
- bool cmp1(const data & x,const data & y)
- {
- return x.val < y.val;
- }
- bool cmp2(const data & x,const data & y)
- {
- return abs(x.val) < abs(y.val);
- }
- void initiation()
- {
- scanf("%d%I64d%I64d",&n,&a,&b);
- memset(used,,sizeof(int)*(n+));
- for(int i = ; i < n ; ++ i)
- {
- scanf("%I64d",&A[i].val);
- A[i].idx = i;
- B[i].val = A[i].val;
- B[i].idx = i;
- p[i] = A[i].val;
- }
- s.clear();
- ans = -(1LL<<);
- }
- void dfs(int cur , long long check)
- {
- if(cur == ) ans = max( ans , check);
- else
- {
- for(int i = ; i < sz ; ++ i)
- {
- if(!vis[i])
- {
- vis[i] = ;
- if(cur == ) dfs(cur + , check + a * s[i]*s[i] );
- else dfs(cur + , check + b*s[i]);
- vis[i] = ;
- }
- }
- }
- }
- long long solve()
- {
- sort(A,A+n,cmp1);
- sort(B,B+n,cmp2);
- used[A[].idx] = , used[A[].idx] = , used[A[n-].idx] = , used[A[n-].idx] = ;
- used[B[].idx] = , used[B[].idx] = ; used[B[n-].idx] = , used[B[n-].idx] = ;
- for(int i = ; i < n ; ++ i) if(used[i]) s.push_back(p[i]);
- sz = s.size();
- memset(vis,,sizeof(vis));
- dfs(,);
- return ans;
- }
- long long solve2()
- {
- for(int i=;i<n;i++)
- {
- for(int j=;j<n;j++)
- {
- if(i==j) continue;
- ans = max(ans,A[i].val*A[i].val*a+b*A[j].val);
- }
- }
- return ans;
- }
- int main(int argc,char *argv[])
- {
- int Case;
- scanf("%d",&Case);
- for(int cas = ; cas <= Case ; ++ cas)
- {
- initiation();
- printf("Case #%d: ",cas);
- if(n<=) printf("%I64d\n",solve2());
- else printf("%I64d\n",solve());
- }
- return ;
- }
hdu 5461 Largest Point 暴力的更多相关文章
- hdu 5461 Largest Point
Thinking about it: 对于式子 a * ti * ti + b * tj,可以看作时有两部分构成 a * ti * ti 和 b * tj,如果整个式子要最大,则要求这两部分都要尽量大 ...
- hdu 5461(2015沈阳网赛 简单暴力) Largest Point
题目;http://acm.hdu.edu.cn/showproblem.php?pid=5461 题意就是在数组中找出a*t[i]*t[i]+b*t[j]的最大值,特别注意的是这里i和i不能相等,想 ...
- HDU 5461:Largest Point
Largest Point Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...
- hdoj 5461 Largest Point
Largest Point Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- HDU 1506 Largest Rectangle in a Histogram (dp左右处理边界的矩形问题)
E - Largest Rectangle in a Histogram Time Limit:1000MS Memory Limit:32768KB 64bit IO Format: ...
- HDU 1506 Largest Rectangle in a Histogram set+二分
Largest Rectangle in a Histogram Problem Description: A histogram is a polygon composed of a sequenc ...
- hdu 5762 Teacher Bo 暴力
Teacher Bo 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5762 Description Teacher BoBo is a geogra ...
- HDU 1333 基础数论 暴力
定义一种数位simth数,该数的各位之和等于其所有质因子所有位数字之和,现给出n求大于n的最小该种数,n最大不超过8位,那么直接暴力就可以了. /** @Date : 2017-09-08 14:12 ...
- HDU 4618 Palindrome Sub-Array 暴力
Palindrome Sub-Array 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4618 Description A palindrome s ...
随机推荐
- textview的上下滑动效果
1.xml文件中 <TextView … android:scrollbars="vertical" ../> 2.java文件中 textview.se ...
- 在.net中用Connection对象数据源的架构信息
可得到数据库中的,表,视图,等信息 string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + fi ...
- [Everyday Mathematics]20150101
(1). 设 $f(x),g(x)$ 在 $[a,b]$ 上同时单调递增或单调递减, 试证: \[ (b-a)\int_a^b f(x)g(x)\mathrm{\,d}x \geq \int_a^b ...
- HDU 3271-SNIBB(数位dp)
题意:给一个数q, q=1时求给定区间,给定进制,各数位和等于m的数字的个数 q=2时求给定区间,给定进制,各数位和等于m的数字中的第k大的数字 分析:dp[i][sum][j],表示长度为i当前数位 ...
- java创建对象的四种方式
1.最常见的 new 一个 2使用反射机制创建对象,直接调用非构造函数 Class obj=Class.forName("A"); A a=obj.newInstance(); C ...
- Jquery UI的datepicker插件使用方法
原文链接;http://www.ido321.com/375.html Jquery UI是一个非常丰富的Jquery插件,并且UI的各部分插件可以独自分离出来使用,这是其他很多Jquery插件没有的 ...
- NOIP2009 靶形数独
4.靶形数独 (sudoku.pas/c/cpp) [问题描述] 小城和小华都是热爱数学的好学生, 近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了, ...
- POJ 1113&&HDU 1348
题意:凸包周长+一个完整的圆周长.因为走一圈,经过拐点时,所形成的扇形的内角和是360度,故一个完整的圆. 模板题,之前写的Graham模板不对,WR了很多发....POJ上的AC代码 #includ ...
- 字符串旋转(str.find()---KMP)
此题旋转带有技巧性,问题转化为常见的问题,熟练STL可以直接用str.find()函数,其是主要想用KMP算法实现字符串的查找算法... //如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的 ...
- 命令rm
mv -r 递归删除文件夹内所有东西mv -i 交互式删除mv -f 强制删除,没有警告提示