ACGO欢乐赛#39全题解
竞赛链接:ACGO欢乐赛#39
> 前言
>
> 这次欢乐赛的难度较12月的欢乐赛有提升,难度有一定升高,但是与元旦欢乐赛相比难度较低。对于萌新刚刚好。
>
> 这次欢乐赛我的表现不好。
>
> 想要一个盲盒,求求了。
个人难度:红 红 红 橙 红 橙
题解部分
系好安全带,我们发车啦!
T1:
原题链接
> 题目名称:取模运算
>
> 时间限制:1000ms1000ms1000ms
>
> 空间限制:128MiB128MiB128MiB
题意分析
这道题让我们输出(114514mod1919810)+(1919810mod114514)(114514mod1919810)+(1919810mod114514)(114514mod1919810)+(1919810mod114514)的结果
关键思路
为了防止爆intintint,所以我们可以直接输出。
Code:Code:Code:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T2:
原题链接
> 题目名称:2的若干次方
>
> 时间限制:1000ms1000ms1000ms.
>
> 空间限制:128MiB128MiB128MiB
题意分析
这道题输入一个正整数nnn,输出2n2^n2n
关键思路
可以使用<cmath>头文件中的pow()函数,pow(a,b)可以计算aba^bab,求2n2^n2n可以用pow(2,n)来计算。
Code:Code:Code:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T3:
原题链接
> 题目名称:下棋
>
> 时间限制:1000ms1000ms1000ms.
>
> 空间限制:128MiB128MiB128MiB
题意分析
这道题让我们求棋盘上有多少颗棋子,规则是这样的:
1.一共,输入nnn次,每次输入aia_iai ,表示棋子下在(1,ai)(1,a_i)(1,ai )下棋
2.如果(1,ai)(1,a_i)(1,ai )位置已经有棋子,则要将棋下在(1,ai+1)(1,a_{i+1})(1,ai+1 )的位置上
3.若(1,ai+1)(1,a_{i+1})(1,ai+1 )也有棋子,则不执行任何操作
关键思路
这道题我们可以用一个vis数组记录位置是否有棋子,如果visaivis_{a_i}visai 为真,则尝试ai+1a_{i+1}ai+1 位置,如果visai+1vis_{a_{i+1}}visai+1 也为真,则跳过。如果找到没有棋子的位置,就将这个点标记为true,最后循环遍历vis数组,查找值为true的元素个数
CodeCodeCode:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T4
原题链接
> 题目名称:ABC游戏
>
> 时间限制:1000ms1000ms1000ms.
>
> 空间限制:128MiB128MiB128MiB
题意分析
这道题输入三个数a,b,c,求每次执行下列两个操作之一,最少几次能让三个数都相等。
操作1:选择两个数将两个数各加1
操作2:选择一个数加2
关键思路
这道题我们可以采用一种策略,要现将整体逼近于最大元素,再增加最小元素使它与其他元素相等,在先将3个数存在数组里,并排序,然后按题意模拟,求出第二大元素和第一大元素的差值,然后将第二大元素和第三大元素连续增加上前面计算好的差值,使用操作一,使第二大元素和最大元素相等,如果第三大元素还小于最大元素,就要使用操作二,有两种情况:
1.第三大元素和最大元素的差值为奇数,这时无法通过操作二直接增加到最大元素,就要将其余两个元素再各加1,这样差值就为偶数了
2.差值为偶数,可以直接将第三大元素增加ceil((a1−a3)/2.0)ceil((a_1-a_3 )/ 2.0)ceil((a1 −a3 )/2.0),三个元素相等,万事大吉
在模拟过程中要使用变量记录操作次数
Code:Code:Code:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T5
原题链接
> 题目名称:看海
>
> 时间限制:1000ms1000ms1000ms.
>
> 空间限制:128MiB128MiB128MiB
题意分析
这道题输入客栈个数和每座客栈高度,求多少个客栈能看见海
关键思路
我们知道如果这个元素前面,既1-(i-1)这个区间不能有比它高的山,否则这座客栈就看不到海了,所以可以使用最朴素的暴力枚举即可,遍历前面每一座山,比较高度,这道题还好,没有极端的数据,本蒟蒻之前看到数据量达到2e5觉得可能TLE就用O(n)解法然后全WA了
Code:Code:Code:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T6
原题链接
> 题目名称:打牌
>
> 时间限制:1000ms1000ms1000ms.
>
> 空间限制:128MiB128MiB128MiB
题意分析
这道题输入TTT个测试点,每个测试点有a,b,c,da,b,c,da,b,c,d四个数,表示小王和小美的牌。
游戏一共两个回合。在每一回合游戏里,小王和小美都随机选择一张未反转的牌将其翻转,两张牌中数据更大的人能赢下这个回合,且赢的回合数多的人赢得整场游戏,如果赢的回合数一样多,就是平局。
关键思路
根据题意可得,只有在两场小王都赢了的情况下或者一场小王赢了,另一场平局的情况下小王才能赢。
我们可以枚举出6种小王赢了的情况:
1.小王出第1张牌,小美出第1张牌,小王第1张牌大于小美第1张牌,小王出第2张牌,小美出第2张牌,小王第2张牌大于小美第2张牌,小王赢2场,小王胜
2.小王出第1张牌,小美出第1张牌,小王第1张牌等于小美第1张牌,小王出第2张牌,小美出第2张牌,小王第2张牌大于小美第2张牌,小王赢1场,小王胜
3.小王出第1张牌,小美出第1张牌,小王第1张牌大于小美第1张牌,小王出第2张牌,小美出第2张牌,小王第2张牌等于小美第2张牌,小王赢1场,小王胜
4.小王出第1张牌,小美出第2张牌,小王第1张牌大于小美第2张牌,小王出第2张牌,小美出第1张牌,小王第2张牌大于小美第1张牌,小王赢2场,小王胜
5.小王出第1张牌,小美出第2张牌,小王第1张牌等于小美第2张牌,小王出第2张牌,小美出第1张牌,小王第2张牌大于小美第1张牌,小王赢1场,小王胜
6.小王出第1张牌,小美出第2张牌,小王第1张牌大于小美第2张牌,小王出第2张牌,小美出第1张牌,小王第2张牌等于小美第1张牌,小王赢1场,小王胜
由于出牌顺序可以变换,所以每次方案数+2
Code:Code:Code:
结语
我是刚入门C++\TT{C++}C++的蒟蒻,有什么问题也请大家多多指出
我是西域春.励志做ACGO\TT{ACGO}ACGO社区最厉害的题解员
感谢各位观看,点赞和关注是对我的最大鼓励
也祝愿ACGO\TT{ACGO}ACGO的比赛越办越好,同学们多多AC,多多变强
官方给我题解奖呗