首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

HDU 4931 Happy Three Friends:排序後比較前二與三至五和的極簡解法

     編輯:C++ 入門

HDU 4931 Happy Three Friends:極簡解法

題目大意

6 個數字。爺爺取最大的兩個,妹子取剩下的三個。比較兩者之和,大者獲勝。輸出贏家。

核心觀察

排序後 a[0] ≤ a[1] ≤ ... ≤ a[5]。
爺爺最優策略必取 a[5] + a[4](最大兩個)。
妹子拿剩下三個中最大的 a[3] + a[2] + a[1](注意 a[0] 最小被捨棄)。
直接比較兩和即可。

代碼(C++)

#include <cstdio>
#include <algorithm>
using namespace std;

int main() {
    int T, a[6];
    scanf("%d", &T);
    while (T--) {
        for (int i = 0; i < 6; ++i) scanf("%d", &a[i]);
        sort(a, a+6);
        int grandpa = a[5] + a[4];
        int girl = a[3] + a[2] + a[1];
        if (grandpa > girl)
            puts("Grandpa Shawn is the Winner!");
        else
            puts("What a sad story!");
    }
    return 0;
}

複雜度

O(1) 排序 6 個數,極快。純邏輯題,無陷阱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved