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

news/2025/1/28 19:01:10 标签: 蓝桥杯, 算法, c++

题目链接: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.niftyadmin.cn/n/5834720.html

相关文章

shiro学习五:使用springboot整合shiro。在前面学习四的基础上,增加shiro的缓存机制,源码讲解:认证缓存、授权缓存。

文章目录 前言1. 直接上代码最后在讲解1.1 新增的pom依赖1.2 RedisCache.java1.3 RedisCacheManager.java1.4 jwt的三个类1.5 ShiroConfig.java新增Bean 2. 源码讲解。2.1 shiro 缓存的代码流程。2.2 缓存流程2.2.1 认证和授权简述2.2.2 AuthenticatingRealm.getAuthentication…

Cursor 帮你写一个小程序

Cursor注册地址 首先下载客户端 点击链接下载 1 打开微信开发者工具创建一个小程序项目 选择TS-基础模版 官方 2 然后使用Cursor打开小程序创建的项目 3 在CHAT聊天框输入自己的需求 比如 小程序功能描述&#xff1a;吃什么助手 项目名称&#xff1a; 吃什么小程序 功能目标…

XSLT 编辑 XML:深度解析与实际应用

XSLT 编辑 XML&#xff1a;深度解析与实际应用 引言 XML&#xff08;可扩展标记语言&#xff09;和XSLT&#xff08;可扩展样式表语言转换&#xff09;是处理和转换XML数据的重要工具。本文将深入探讨XSLT在编辑XML文档中的应用&#xff0c;包括其基本概念、语法结构、以及实…

性能测试丨分布式性能监控系统 SkyWalking

软件测试领域&#xff0c;分布式系统的复杂性不断增加&#xff0c;如何保证应用程序的高可用性与高性能&#xff0c;这是每一个软件测试工程师所面临的重大挑战。幸运的是&#xff0c;现在有了一些强大的工具来帮助我们应对这些挑战&#xff0c;其中之一便是Apache SkyWalking。…

图像处理算法研究的程序框架

目录 1 程序框架简介 2 C#图像读取、显示、保存模块 3 C动态库图像算法模块 4 C#调用C动态库 5 演示Demo 5.1 开发环境 5.2 功能介绍 5.3 下载地址 参考 1 程序框架简介 一个图像处理算法研究的常用程序逻辑框架&#xff0c;如下图所示 在该框架中&#xff0c;将图像处…

使用飞书群机器人监控服务器GPU使用率

目标&#xff1a;如果服务器GPU空置&#xff0c;可以及时推送消息到飞书群。 其他类似的监控目标也可以修改代码实现。 步骤&#xff1a; (1) 首先在群聊设置加入机器人&#xff0c;复制webhook_url (2) 在服务器后台运行如下代码。注意替换webhook_url """…

J1打卡——鸟类识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1.检查GPU import tensorflow as tf gpustf.config.list_physical_devices("GPU") if gpus:tf.config.experimental.set_memory_growth(gpus[0],True…

浅谈OceanBase服务名(SERVICE_NAME)

服务名定义 官方声明 在 OceanBase 数据库 V2.x 或 V3.x 版本中&#xff0c;物理备库的产品形态为集群级主备&#xff0c;互为主备关系的集群的集群名及其对应的租户名均相同&#xff0c;而不同的主备库集群&#xff0c;其集群名也不相同&#xff0c;故集群名可以作为主备集群…