------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
前言
这是一篇挑战赛题解,看在作者这么辛苦的份上,给个赞不介意吧(T o T)。
个人认为的难度是这样的:
题目 难度 T1 红\color{red}红红 T2 红\color{red}红红 T3 红\color{red}红红 T4 红\color{orange}红红 T5 橙\color{gold}橙橙 T6 黄\color{#49CDEF}黄黄
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T1 大大和1
个人难度:入门|考察内容:输出 你猜它为什么是T1\COLOR{WHITE}~~~你猜它为什么是T1 你猜它为什么是T1
这道题就是一道只需动动脑,无需任何算法的题。这道题乍一看很复杂,但只要仔细看就会发现:i≤ji≤ji≤j
我们又得知 max(ai,…,aj)≥ai+…+aj ~max(a_i,…,a_j)≥a_i+…+a_j~ max(ai ,…,aj )≥ai +…+aj 。但是对于任意 i=j max(ai)=ai~i=j~~max(a_i)=a_i i=j max(ai )=ai 。
所以只需输出 t ~t~ t 个YES就行了。
代码如下:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T2 午枫的博弈
个人难度:入门|考察内容:贪心
“当最后只剩下一个数没被隐藏时,游戏结束。”
所以这道题需要考虑最后一个数在谁的手里,当 n ~n~ n 是奇数时,拿奇数的小午有选择权,反之则是拿偶数的小枫有选择权。
接下来考虑获胜条件,如果小午有选择权并且奇数位置中有偶数或小枫有选择权但偶数位置没有奇数,小午胜,否则小枫胜。
代码如下:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T3 小午的请求
个人难度:入门|考察内容:贪心
如果所有数之和是奇数,减去最小的奇数输出就行。
代码如下:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T4 小枫爬山
个人难度:普及-|考察内容:二分查找
我们可以先用一个数组 h ~h~ h 来存放每个台阶的高度,再用一个数组 A ~A~ A 来存放到当前台阶的爬升的最高高度。
数组 A ~A~ A 的存储方式是这样的:Ai=max(Ai−1,hi−hi−1)A_i=max(A_{i-1},h_i-h_{i-1})Ai =max(Ai−1 ,hi −hi−1 ),这样就可以保证数组 A ~A~ A 是一个非降序的数组。
接下来将输入 m ~m~ m 个人的腿长,设数组 A ~A~ A 中第一个大于第 i ~i~ i 个人腿长的下标为 ans ~ans~ ans ,那么 hans ~h_{ans}~ hans 即为答案。
代码如下:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T5 午枫的双人挑战
个人难度:普及/提高-|考察内容:贪心
初始化:这道题需要先用数组 A,B ~A,B~ A,B 存放输入数据,紧接着再用数组 C,D ~C,D~ C,D 分别存放其前缀和。
对于每一个样例 k ~k~ k ,我们用一个变量 minn ~minn~ minn 存储最小值和一个变量 now ~now~ now 存储到当前位置时战斗部分的最小用时,其中当位置为 i ~i~ i 时,minn=min(now+Ci,minn) minn=min(now+C_i,minn)~minn=min(now+Ci ,minn) ,其次,我们肯定要至少做到第 k ~k~ k 个关卡的解密,所以 now ~now~ now 初始值为 Dk~D_k Dk , minn ~minn~ minn 初始值为 Ck+Dk~C_k+D_k Ck +Dk 。
对于如何处理 now ~now~ now ,只需使用一个优先队列即可,当走到第 j ~j~ j 个位置时,将 Bj ~B_j~ Bj 存入优先队列并将 now+Bj ~now+B_j~ now+Bj ,接着再将 now ~now~ now 减去队首并删除队首。
代码如下:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T6 大大和2
个人难度:普及+/提高|考察内容:---
下面这个是马上要被hank的做法
代码如下:
作者上铂金力\color{white}作者上铂金力作者上铂金力