【Coding】寒假每日一题Day.5.三国游戏

题目来源

题目来自于AcWing平台:https://www.acwing.com/problem/content/description/4968/
以blog的形式记录程序设计算法学习的过程,仅做学习记录之用。

题目描述

在这里插入图片描述

输入输出格式与数据范围

在这里插入图片描述

样例

在这里插入图片描述

思路

思路参考自题解:https://www.acwing.com/solution/content/221015/

最关键的思路在于,胜出的条件是 X > Y + Z X\gt{Y+Z} X>Y+Z,这个不等式可以等价变换为 X − Y − Z > 0 X-Y-Z\gt0 XYZ>0,因此这道题目便豁然开朗了。对于 A , B , C A, B, C A,B,C | B , A , C B, A, C B,A,C | C , A , B C, A, B C,A,B三种排列顺序,分别求出每种情况下的 X − Y − Z X-Y-Z XYZ,然后对保存着 X − Y − Z X-Y-Z XYZ信息的数组进行降序排序。

显然,如果 ( X − Y − Z ) [ i ] (X-Y-Z)[i] (XYZ)[i]如果大于0,则说明这个选择满足题意,可以将它统计进加和 s u m sum sum中,而如果它小于0,则 s u m sum sum也相应减小,如果最后 s u m ≤ 0 sum\leq0 sum0,则说明此时的枚举该停止了。

Code

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;

const int maxn = 1e5 + 5;
int n;
LL res = 0;

void check(vector<int> a, vector<int> b, vector<int> c){
   
    for(int i = 0; i < n; i ++){
   
        a[i] -= b[i] + c[i];
    }
    sort(a.begin(), a.end());
    LL cnt = 0, sum = 0;
    for(int i = a.size()-1; i >= 0; i --){
   
        sum += a[i];
        if(sum <= 0)    break;
        cnt ++;
    }
    if(cnt != 0)    res = max(res, cnt);
}

int main()
{
   
    cin >> n;
    vector<int> a(n), b(n), c(n);
    
    for(int i = 0; i < n; i ++) cin >> a[i];
    for(int i = 0; i < n; i ++) cin >> b[i];
    for(int i = 0; i < n; i ++) cin >> c[i];
    
    check(a, b, c);
    check(b, a, c);
    check(c, a, b);
    
    if(res == 0)    cout << "-1";
    else            cout << res;
    return 0;
}

相关推荐

  1. 【前端每日day5

    2024-01-23 23:42:03       14 阅读
  2. 游戏.

    2024-01-23 23:42:03       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-23 23:42:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-23 23:42:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-23 23:42:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-23 23:42:03       20 阅读

热门阅读

  1. Midjourney常见参数列表(极速版)

    2024-01-23 23:42:03       34 阅读
  2. GitHub Copilot 与 OpenAI ChatGPT 的区别及应用领域比较

    2024-01-23 23:42:03       30 阅读
  3. 第二百八十一回

    2024-01-23 23:42:03       42 阅读
  4. MySQL计算碎片化比率并优化表

    2024-01-23 23:42:03       35 阅读
  5. C++面试:stl的栈和队列介绍

    2024-01-23 23:42:03       39 阅读
  6. Git tag使用

    2024-01-23 23:42:03       31 阅读
  7. 远程ssh 不通的原因之一

    2024-01-23 23:42:03       39 阅读
  8. 1213:八皇后问题(c++)

    2024-01-23 23:42:03       31 阅读
  9. 如何提高sql执行效率

    2024-01-23 23:42:03       34 阅读