当前位置: 首页 > article >正文

蓝桥杯真题 - 三国游戏 - 题解

题目链接:https://www.lanqiao.cn/problems/3518/learning/

个人评价:难度 2 星(满星:5)
前置知识:贪心


整体思路

  • 先假设魏蜀吴中的某一个势力最终获胜的情况下,如何求出事件发生的最大数量,最后枚举三个势力获胜的情况取最大值就是答案;
  • 假设魏国最终胜利,那最好是让已发生的事件中 A i A_i Ai 的和尽可能大于 B i + C i B_i + C_i Bi+Ci 的和,大得越多越优先选择让这个事件发生,所以按 A i − B i − C i A_i - B_i - C_i AiBiCi 从大到小排序,依次选择需要发生的事件即可,选到 A i A_i Ai 的和小于等于 B i + C i B_i + C_i Bi+Ci 的和就不再选了。

过题代码

#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
const int maxn = 100000 + 100;
int n;
LL x[maxn], y[maxn], z[maxn];
LL a[maxn], b[maxn], c[maxn];

int solve(LL num[maxn]) {
    if (num[n - 1] <= 0) {
        return -1;
    }
    LL tmp = 0;
    for (int i = n - 1; i >= 0; --i) {
        tmp += num[i];
        if (tmp <= 0) {
            return n - i - 1;
        }
    }
    return  n;
}

int main(){
#ifdef ExRoc
    freopen("test.txt", "r", stdin);
#endif // ExRoc
    ios::sync_with_stdio(false);

    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> x[i];
    }
    for (int i = 0; i < n; ++i) {
        cin >> y[i];
    }
    for (int i = 0; i < n; ++i) {
        cin >> z[i];
    }
    for (int i = 0; i < n; ++i) {
        a[i] = x[i] - y[i] - z[i];
        b[i] = y[i] - x[i] - z[i];
        c[i] = z[i] - x[i] - y[i];
    }
    sort(a, a + n);
    sort(b, b + n);
    sort(c, c + n);
    cout << max({solve(a), solve(b), solve(c)}) << endl;

    return 0;
}

http://www.kler.cn/a/520169.html

相关文章:

  • 跟我学C++中级篇——64位的处理
  • 消息队列篇--通信协议篇--MQTT(通配式主题,消息服务质量Qos,EMQX的Broker,MqttClient示例,MQTT报文等)
  • Centos7系统php8编译安装ImageMagick/Imagick扩展教程整理
  • 【ARM】解决MDK在打开工程的时候提示CMSIS的版本不对问题
  • 定时器按键tim_key模版
  • 【Salesforce】审批流程,代理登录 tips
  • vue3中suspense的用法以及使用场景
  • Synology 群辉NAS安装(6)安装mssql
  • decison tree 决策树
  • 分公司-国内外大公司-github等开源项目推荐笔记
  • 【Postgres_Python】使用python脚本批量创建和导入多个PG数据库
  • 巴菲特购买比特币
  • SpringBoot+Electron教务管理系统 附带详细运行指导视频
  • 视频多模态模型——视频版ViT
  • C++小病毒-1.0勒索(更新次数:2)
  • WPF实战案例 | C# WPF实现大学选课系统
  • salesforce 可以 outbound profile 吗
  • Mac 上如何同时运行多个MySQL版本?
  • 基于微信小程序的停车场管理系统设计 停车场微信小程序的设计与实现 (源码+文档)
  • 2025年危化品经营单位生产管理人员考试真题附答案
  • 【Elasticsearch】doc_values 可以用于查询操作
  • Pyecharts之散点图的视觉扩展
  • C语言初阶力扣刷题——349. 两个数组的交集【难度:简单】
  • AJAX RSS Reader:技术解析与应用场景
  • ESMC-600M蛋白质语言模型本地部署攻略
  • 【C++高并发服务器WebServer】-2:exec函数簇、进程控制