首页 >行情 > > 正文

题目 3158: 蓝桥杯2023年第十四届省赛真题-三国游戏(贪心)

来源:博客园 2023-04-28 17:06:01


【资料图】

题目描述

小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵X, Y, Z (一开始可以认为都为 0 )。游戏有 n 个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第 i 个事件发生时会分别让 X, Y, Z 增加Ai , Bi ,Ci 。当游戏结束时 (所有事件的发生与否已经确定),如果 X, Y, Z 的其中一个大于另外两个之和,我们认为其获胜。例如,当 X > Y + Z 时,我们认为魏国获胜。小蓝想知道游戏结束时如果有其中一个国家获胜,最多发生了多少个事件?如果不存在任何能让某国获胜的情况,请输出 −1 。

输入格式

输入的第一行包含一个整数 n 。第二行包含 n 个整数表示 Ai,相邻整数之间使用一个空格分隔。第三行包含 n 个整数表示 Bi,相邻整数之间使用一个空格分隔。第四行包含 n 个整数表示 Ci,相邻整数之间使用一个空格分隔。

输出格式

输出一行包含一个整数表示答案。样例输入31 2 22 3 21 0 7样例输出2

解答

1.解题思路是,使用贪心思想选出三个国家各自获胜的最大事件数,取其最大作为答案;那么如何算出一个国家士兵应该经历哪些事件并满足大于另外两国呢,同样使用贪心算法2.我们使用一个类来存储一个事件,这个事件有abc三个属性,分别对应题目对三个国家兵力的提升

static class node {        long a, b, c;        public node(long a, long b, long c) {            this.a = a;            this.b = b;            this.c = c;        }    }

那么我们输入数据时需要注意一点,它的每一行都是对一个国家的影响,也就是对于事件i,输入的第一行数据是事件i的a,第二行数据才是事件i的b

node[] events = new node[n];    for (int i = 0; i < n; i++) events[i] = new node(sc.nextInt(), 0, 0);     for (int i = 0; i < n; i++) events[i].b = sc.nextInt();    for (int i = 0; i < n; i++) events[i].c = sc.nextInt();

3.我们对事件进行排序,排序规则根据我们的需求而定,我们需要得出每个国家获胜的事件数,就把事件排序为对那个国家提升的兵力最多的事件最靠前比如1 2 22 3 21 0 7事件i1对第一个国家提升量为-2,而i2提升量为-1,i3提升量为-7,则排序为i2i1i3事件i1对第二个国家提升量为0,而i2提升量为1,i3提升量为-7,则排序为i2i1i3事件i1对第三个国家提升量为-2,而i2提升量为-5,i3提升量为3,则排序为i3i1i2

Arrays.sort(events, (o1, o2) -> o2.a - o2.b - o2.c + o1.b + o1.c - o1.a > 0 ? 1 : -1);  Arrays.sort(events, (o1, o2) -> o2.b - o2.a - o2.c + o1.a + o1.c - o1.b > 0 ? 1 : -1);  Arrays.sort(events, (o1, o2) -> o2.c - o2.a - o2.b + o1.a + o1.b - o1.c > 0 ? 1 : -1);

排序完之后使用排序后的顺序算出对应国家在最大优势的情况下可以经过几个事件并满足兵力大于其他两国

Arrays.sort(events, (o1, o2) -> o2.a - o2.b - o2.c + o1.b + o1.c - o1.a > 0 ? 1 : -1);  ans = Math.max(ans, f(events, 0));  Arrays.sort(events, (o1, o2) -> o2.b - o2.a - o2.c + o1.a + o1.c - o1.b > 0 ? 1 : -1);  ans = Math.max(ans, f(events, 1));  Arrays.sort(events, (o1, o2) -> o2.c - o2.a - o2.b + o1.a + o1.b - o1.c > 0 ? 1 : -1);  ans = Math.max(ans, f(events, 2));

这里使用一个数字标记当前优势国,而且如果你不能在第一个事件就大于其他两国,那么后面就更不可能了,所以不满足a>b+c时就直接break并返回事件数

private static long f(node[] events, int cur) {        long a = 0, b = 0, c = 0;        long res = 0;        for (int i = 0; i < events.length; i++) {            a += events[i].a;            b += events[i].b;            c += events[i].c;            if (cur == 0) {                if (a > b + c) {                    res = i + 1;                } else {                    break;                }            } else if (cur == 1) {                if (b > a + c) {                    res = i + 1;                } else {                    break;                }            } else {                if (c > b + a) {                    res = i + 1;                } else {                    break;                }            }        }        return res;    }

4.最后打印答案,如果事件数为0,说明没有国家能够满足a>b+c的条件打印-1即可

System.out.println(ans == 0 ? -1 : ans);

完整代码

import java.util.Arrays;import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int n = sc.nextInt();        long ans = 0;        node[] events = new node[n];        for (int i = 0; i < n; i++) events[i] = new node(sc.nextInt(), 0, 0);        for (int i = 0; i < n; i++) events[i].b = sc.nextInt();        for (int i = 0; i < n; i++) events[i].c = sc.nextInt();        Arrays.sort(events, (o1, o2) -> o2.a - o2.b - o2.c + o1.b + o1.c - o1.a > 0 ? 1 : -1);        ans = Math.max(ans, f(events, 0));        Arrays.sort(events, (o1, o2) -> o2.b - o2.a - o2.c + o1.a + o1.c - o1.b > 0 ? 1 : -1);        ans = Math.max(ans, f(events, 1));        Arrays.sort(events, (o1, o2) -> o2.c - o2.a - o2.b + o1.a + o1.b - o1.c > 0 ? 1 : -1);        ans = Math.max(ans, f(events, 2));        System.out.println(ans == 0 ? -1 : ans);    }    private static long f(node[] events, int cur) {        long a = 0, b = 0, c = 0;        long res = 0;        for (int i = 0; i < events.length; i++) {            a += events[i].a;            b += events[i].b;            c += events[i].c;            if (cur == 0) {                if (a > b + c) {                    res = i + 1;                } else {                    break;                }            } else if (cur == 1) {                if (b > a + c) {                    res = i + 1;                } else {                    break;                }            } else {                if (c > b + a) {                    res = i + 1;                } else {                    break;                }            }        }        return res;    }    static class node {        long a, b, c;        public node(long a, long b, long c) {            this.a = a;            this.b = b;            this.c = c;        }    }}
上一篇:俄媒:俄两大舰队换帅有何深意? 下一篇:最后一页
x
推荐阅读

题目 3158: 蓝桥杯2023年第十四届省赛真题-三国游戏(贪心)

2023-04-28

俄媒:俄两大舰队换帅有何深意?

2023-04-28

湿地春来万鸟飞|当前通讯

2023-04-28

【天天播资讯】世行最新展望:大宗商品价格预计出现疫情以来最大跌幅

2023-04-28

欧股高开 德国DAX30指数涨0.35%

2023-04-28

“五一”来乐山旅游 可在这三个收费站免费乘坐摆渡公交 看点

2023-04-28

五一假期外地车辆轻微交通违法不予处罚-天天快资讯

2023-04-28

指导价42.78-53.13万元 全新奔驰GLC正式上市_世界热议

2023-04-28

【园所活动】联盟起航 并肩成长——九幼联盟园观摩交流活动

2023-04-28

新能源发电与储能产业耦合的道路在何方?-当前热点

2023-04-28

当前速看:我的世界格雷科技6模组铌钛合金锭有什么用

2023-04-28

中国驻沙特使领馆积极协调做好在苏丹中国公民撤离保障工作

2023-04-28

【环球新要闻】果麦文化(301052):该股换手率大于8%(04-28)

2023-04-28

【天天快播报】新车价格战“殃及”二手车

2023-04-28

天天关注:泰山发布国安海报:蓄势待发 头号射手解禁复出

2023-04-28

丰泽区渔人海上救援中心收到爱心人士赠送的消防艇

2023-04-28

天天资讯:2023年北京爱迪国际学校小学入学条件详解 -->

2023-04-28

世界信息:公募REITs一季报显示底层资产基本面稳中向好 7只产品单季收入破亿元

2023-04-28

中国卫通:4月27日融资买入9017.45万元,融资融券余额7.36亿元 环球速看料

2023-04-28

汤姆猫:公司目前未与微软开展业务合作-焦点日报

2023-04-28

天天即时看!三柏硕(001300)2023年一季报简析:净利润减90.32%

2023-04-28

【普莱柯】2022年报及2023一季报点评:23Q1归母净利润同比+74.45%,非瘟亚单位疫苗提交应急评审_快消息

2023-04-28

十一次延期之后 佳源国际终止6笔美元票据交换要约

2023-04-28

拼多多概念股板块4月27日跌2%,值得买领跌,主力资金净流出1.72亿元

2023-04-28

今日打上花火日文名_打上花火日文|焦点信息

2023-04-28

索尼新一代空间现实显示屏正式发布 重新定义3D内容展示基准|播报

2023-04-27

水果第一股洪九果品再度大跌10%,三个月暴跌65%,中金、天风、浙商暴跌前唱好-速看

2023-04-27

天天报道:超虚拟分辨率有什么坏处_超虚拟分辨率是什么

2023-04-27

当前焦点!克莱INS转发卢尼篮板比肩张伯伦纪录:安踏帮

2023-04-27

首展首秀、艺术联名、宠物友好、运动体验……不仅仅是购物,沪上商场打造高能级社交场景 当前焦点

2023-04-27

国家能源集团首个“沙戈荒”新能源基地一期项目全容量并网发电 环球快播

2023-04-27

每日播报!1199 元起,振华 Leadex VII ATX 3.0 电源上市:转换率超 90%

2023-04-27

【“枫桥经验”新实践】顺义区二张营村“大家来协商”村民议事厅巧解矛盾纠纷

2023-04-27

江苏养老金2023会涨多少?哪些人将受益? 全球微速讯

2023-04-27

浙江省委原常委、杭州市委原书记周江勇受贿案一审开庭 世界消息

2023-04-27

吆组词 要组词

2023-04-27

恒生指数27日收涨0.42% 中国平安领涨蓝筹股 天天快看点

2023-04-27

在语文教学中传承和弘扬传统文化

2023-04-27

招商银行上海分行服务科创有新招|天天播报

2023-04-27

「NBA」系列赛最后两场砍下98分!巴特勒导演“黑八奇迹”

2023-04-27

上海证监局:将适时开展第二批资本市场金融科技创新试点

2023-04-27

新动态:​中乌领导人通话,三个词刷屏外媒,如何翻译?

2023-04-27

世界即时:第四范式大模型产品完成两个月内的第三次迭代:以生成式AI重构企业软件

2023-04-27

2023年中国家电及消费电子博览会(AWE2023)开幕

2023-04-27

香港楼市:一个月HIBOR升0.67点子至3.29077% 是3月23日后最高

2023-04-27

郎德上寨,传奇的古朴苗寨

2023-04-27

正元地信:4月26日融资买入507万元,融资融券余额9200.53万元

2023-04-27

起诉赡养费可以只诉其中一个子女吗

2023-04-27

“小青柑”青春助力2023上海苏州河半程马拉松志愿服务 全球观点

2023-04-27

4月27日独家药品板块涨幅达2% 天天观点

2023-04-27

世界快资讯丨无锡“工匠号”地铁专列首发

2023-04-27

瑞丰光电2022年营收13.36亿 净利1372.29万 总经理龚伟斌薪酬79.31万

2023-04-27

云顶新耀-B(01952.HK):4月26日南向资金增持29.6万股

2023-04-27

畅通区域营商环境一体化

2023-04-27

湘潭市首批9名防水工人获社会化认定职业资格证书

2023-04-27

怎么用肉眼区分钢和铁(钢和铁和铁有什么区别)

2023-04-27

球星挑战赛曼谷站27日直播赛程,林高远陈幸同一天打3场比赛 时讯

2023-04-27

耐用鼠标垫_耐用鼠标

2023-04-27

谁知道企划部的职责是什么呢_谁知道企划部的职责是什么-速看

2023-04-27

江苏地税网上申报系统登录_江苏地税网上申报|天天观焦点

2023-04-27

皇帝

2023-04-26

“酱油茅”业绩失速:“添加剂双标”涟漪效应,海天味业Q4净利锐减两成

2023-04-26

辟谣!网传郑许市域铁路4月28日开通属不实消息

2023-04-26

《惊奇队长2》剧情设想,斯库鲁女王将与克里人决战

2023-04-26

中信银行亮相2023年中国国际金融展 展出29项金融创新成果

2023-04-26

2023广州五一音乐喷泉盘点(演出时间+地点) 全球视点

2023-04-26

寻衅滋事罪累积判几年

2023-04-26

李小璐演过的电视剧有哪些_李小璐演过的电视剧

2023-04-26

累计盈余资金造价_累计盈余资金怎么算

2023-04-26

每日热文:初中语文教材培训心得体会_初中语文教材

2023-04-26

【天天报资讯】福元医药:2023年目标实现营收35.55亿元 利润总额5.3亿元

2023-04-26

当前速读:工程师给机器狗添加了ChatGPT:现在它可以说话了

2023-04-26

黑龙江启动青少年学生读书行动

2023-04-26

青岛将举行“市办实事40年,让城市更美好”宣传纪念活动

2023-04-26

​​雷军谈小米13/13pro/13Ultra区别:定位不同用户群

2023-04-26

【全球新要闻】许继电气:正积极跟进沙特-约旦等海上风电相关项目

2023-04-26

减持知乎、美图套现1.5亿,62岁李开复投身AI大模型之战:相信中国会胜出

2023-04-26

哪些借款平台比较好通过又安全?国家承认10家网贷平台

2023-04-26

方正电机成立高科润电子公司,注册资本5000万 世界速讯

2023-04-26

五一去哪玩?盐城游玩攻略来啦!_天天关注

2023-04-26

青海省“组团式”赴六个城市举办专场活动 用优厚条件引才引智

2023-04-26

常宝股份(002478)盘中异动 股价振幅达6.97% 上涨7.13%(04-26)

2023-04-26

环球百事通!透视财报|华熙生物营收领先 “医美三剑客”业绩分化

2023-04-26

孤单心事 颜人中(孤单心事歌词)

2023-04-26

即时焦点:爱心捐赠 传递温暖:渭城区人民医院党员志愿者走进咸阳市社会福利院、咸阳市特殊教育学校奉献爱心

2023-04-26

硬核科技论丨实力雄厚 盘点上海车展中国硬派底盘技术

2023-04-26

英超提醒:西汉姆联过去10场赛事均有进球斩获

2023-04-26

【天天时快讯】中信证券:智利锂政策扰动催化下 锂板块有望反弹

2023-04-26

预计出战!哈姆:浓眉向我保证过他会为G5做好准备

2023-04-26

环球观速讯丨杭州三批次12宗涉宅地块166.6亿元成交,8宗地块封顶摇号

2023-04-26

去年辽宁专利授权量达77434件 每万人口发明专利拥有量比上年末增加2.0件

2023-04-26

法拉利f458二手_法拉利f458_讯息

2023-04-26

不是倒车接人,网友调侃“A股在倒车撞我”,节前持币持股?多家基金公司一线解读|前沿资讯

2023-04-26

微速讯:松桃公安:积极实施“预防警务” 为之于未有,治之于未乱

2023-04-26

第六届全国高校青年教师教学竞赛决赛举办|环球热头条

2023-04-25

圆通速递2022年报披露:全年营收创新高 归母净利增幅超八成

2023-04-25

世界热点!北京集中推介73宗住宅地块 三成以上位于中心城区

2023-04-25

天天新动态:5800余人受害,涉案金额1500万余元!陵水警方打掉一犯罪团伙

2023-04-25

探骊得珠的意思_探骊得珠的解释|环球滚动

2023-04-25

全省版权保护示范单位授牌仪式在长春市明德小学举行

2023-04-25