zoukankan      html  css  js  c++  java
  • HDU5461 沈阳网络赛题

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

      题目的意识是给你n个数以及a, b,从n个数中选两个数使得a*t1^2 + b*t2最大, 思路很简单。 见代码解释:

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    typedef long long LL;
    int n, a, b;
    
    struct node{
        LL x; int idx;
        bool operator<(const node&r) const{
            return x < r.x;
        }
    }n1[1000000 + 100], n2[1000000 + 100];
    
    int main() {
        int T;
        scanf("%d", &T);
        int kase = 0;
        while(T--) {
            scanf("%d%d%d", &n, &a, &b);
            for(int i=0; i<n; i++) {
                int t;
                scanf("%d", &t);
                n1[i] = (node){(LL)a*(LL)t*(LL)t, i}; //每个数的平方*a
                n2[i] = (node){(LL)b*(LL)t, i};       //每个数*b
            }
            sort(n1, n1+n);     //将每个数的权从小到大排序
            sort(n2, n2+n);
            if(n1[n-1].idx != n2[n-1].idx) {    //如果最大的两个数的下标不一样
                printf("Case #%d: %lld
    ", ++kase, n1[n-1].x+n2[n-1].x); 
            }else{                            
                LL res = max(n1[n-1].x+n2[n-2].x, n1[n-2].x+n2[n-1].x);
                printf("Case #%d: %lld
    ", ++kase, res);
            }
        }
        return 0;
    }
  • 相关阅读:
    富文本
    frame,bounds,position,anchorPoint理解
    内存相关
    OpenGL
    Xcode 编译选项详解
    iOS 工程引用
    iOS 事件传递和消息处理
    UICollectionView用法
    数据库
    多线程
  • 原文地址:https://www.cnblogs.com/xingxing1024/p/5337276.html
Copyright © 2011-2022 走看看