hdu5461(2015沈阳网络赛L题)
生活随笔
收集整理的這篇文章主要介紹了
hdu5461(2015沈阳网络赛L题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
給出一個數列,我們要在這里找出兩個數,使得題意中那個表達式最大。
思路:
排兩個序就好了啊,看代碼一下就懂了。
代碼:
#include <cstdio> #include <algorithm> using namespace std;const long long maxn = 5 * 1000000 + 10; struct Node {long long id, x; }aa[maxn], bb[maxn]; bool cmp(Node n1, Node n2) {if(n1.x != n2.x) {return n1.x > n2.x;}return n1.id < n2.id; }int main() {long long n, a, b;long long t;long long x;scanf("%I64d",&t);for(long long kase = 1; kase <= t; kase++) {scanf("%I64d%I64d%I64d",&n, &a, &b);for(long long i = 1; i <= n; i++) {scanf("%I64d",&x);aa[i].id = i;aa[i].x = x * x * a;bb[i].id = i;bb[i].x = b * x;}sort(aa + 1, aa + 1 + n, cmp);sort(bb + 1, bb + 1 + n, cmp);long long ans;if(aa[1].id != bb[1].id) {ans = aa[1].x + bb[1].x;} else {ans = aa[1].x + bb[2].x;ans = max(ans, aa[2].x + bb[1].x);}printf("Case #%I64d: %I64d\n", kase, ans);}return 0; }總結
以上是生活随笔為你收集整理的hdu5461(2015沈阳网络赛L题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu5452(2015沈阳网络赛C题)
- 下一篇: hihoCoder1228(2015北京