HDU5461-思维
来源:互联网 发布:漫画本子在淘宝怎么搜 编辑:程序博客网 时间:2024/05/29 02:37
https://vjudge.net/contest/167883#problem/L
给定一个t个数,和a,b问你最大值。。。
第一次 分了a和b 四种情况,
当a为- b为+ ,那么a取最小的t2 b取最大的t
当a为+ b为 + ,那么都取最大的
当a为+b 为-,那么a取最大的,b取最小的。
当a和b同为 –,那么都取最小的。
并且每种情况都要判断是否是相同的y,如果是相同的情况
还要测试是t2 取次小(大)还是t1取次小(大).
数组开多了,一直mle和re。。
没有看到他ac的时候。。
其实 枚举at2 和bt就行。。
当相同都取最大。
否则分别取次大找最大的,,
郁闷。
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>using namespace std;typedef long long ll;const int maxn=4;struct node{ long long x; int y;};int main(){ int t; int n; ll a; node c[maxn],b[maxn]; ll a1,b1; node bb,cc; scanf("%d",&t); for(int tt=1;tt<=t;tt++){ for(int i=0;i<2;i++){ b[i].x=-1e18; c[i].x=-1e18; } scanf("%d%lld%lld",&n,&a1,&b1); for(int i=0;i<n;i++){ scanf("%lld",&a); bb.x=a*a*a1; bb.y=i; if(b[0].x<bb.x){ { b[0].x=bb.x; b[0].y=i; } if(b[0].x>b[1].x){ swap(b[0],b[1]); } } cc.x=a*b1; cc.y=i; if(c[0].x<cc.x){ { c[0].x=cc.x; c[0].y=i; } if(c[0].x>c[1].x){ swap(c[0],c[1]); } } } if(c[1].y!=b[1].y) printf("Case #%d: %lld\n",tt,b[1].x+c[1].x); else { long long ans=max(c[1].x+b[0].x,c[0].x+b[1].x); printf("Case #%d: %lld\n",tt,ans); } } return 0;}
阅读全文
0 0
- HDU5461-思维
- HDU5461 Largest Point 贪心
- hdu5461 Largest Point(沈阳网赛)
- hdu5461(2015沈阳网络赛L题)
- hdu5461(2015 ACM/ICPC Asia Regional Shenyang Online)
- HDU5461 Largest Point 贪心(2015acm沈阳网络赛)
- 思维
- 思维
- 思维
- 思维
- 思维
- 思维
- 【思维方式】思维转个弯
- 完整性思维--层次思维
- 不战而胜思维
- 思维图谱
- 思维定式
- 思维吊床
- Android build error on Ubuntu 16.04 LTS
- aircrack-ng/airdrop-ng
- 【linux 命令】Linux 下常用压缩文件的解压、压缩
- 一道关于fork和printf的面试题
- Opencv数据结构Mat详解
- HDU5461-思维
- 欢迎您在新浪博客安家
- Map集合
- C#语言语法结构
- C#中播放声音
- C#中的文件夹
- [转]typedef 详解
- Ubuntu通过apt-get方式下载jdk
- 指针