| solved | A | B | C | D | E | F | G | H | I | J | K | L | M | N |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 10 / 14 | O | O | O | Ø | Ø | O | · | O | O | Ø | O | · | · | · |
- O:比赛时通过
- Ø:赛后通过
- !:比赛时尝试了未通过
- ·:比赛时未尝试
总结:
- 第一次满员一起打比赛,也还没什么配合,还没有特别明确的分工,就是谁先读懂题意谁先来做。
- 不要只有一个人懂某块知识。当队友在某道题陷进去之后,需要另一个人来帮忙debug或者是提供测试数据都行,千万别让他一个人陷进去出不来。
- K题。这个单独写出来,实在是因为温哥哥做太久了,留给温哥哥自己反思。
A A Party for You Started
solved by Sstee1XD
题意: 给你一棵树,每次操作先询问单点权值,然后增加一点权值,同时它所有的子节点也增加相同的权值。
题解: 看题意很容易想到单点修改,区间求和或者区间修改,查询单点问题。为了把节点和它的子节点放在一个区间内,要用dfs序去处理。当时写了一个树状数组去区间求和,比较麻烦。赛后发现区间修改,查询单点简单很多,可以用线段树写。这里以树状数组维护差分数组,查询单点为例。
AC代码
1 |
|
B Broken Pad
solved by lllllan
题意: 每组数据含有两个数组a、b,数组由0和1组成。要求你通过一些翻转使得数组a变成数组b。操作要求为:当翻转第i个数字的时候,第i以及他之后的所有数字都将由1变成0或由0变成1。特别的,可以在第一步时,将整个数组重置为全0数组。找出翻转次数最少的操作方案,并输出每次翻转的数字的下标。(如一开始将数组a重置为0,则需要首位输出0)。
题解: 定义一个翻转标记p来记录前一位的翻转对后一位的影响,需要分别去统计一般情况下需要翻转的次数,和重置之后需要翻转的次数,比较之后输出次数较少的即可。
AC代码
1 |
|
C Cook Steak
solved by lllllan
题意: 需要按顺序煎熟n块牛排,而每块牛排 i 都有它合适的温度范围[]。温度从0开始,每上升或下降一个单位需要一分钟,到达合适范围之后,煎熟一块牛排需要一分钟。问按顺序煎熟所有的牛排最少需要多少分钟。
题解: 贪心。设一个前驱温度pre,初始为0。按顺序给出n块牛排,如果pre本来在下一块牛排合适的温度范围内,则不做改变。否则,则将温度改变到离pre最近,又在合适范围内的值。最后再算上煎熟n块牛排的时间即答案。
AC代码
1 |
|
D Dessert Time
solved by Sstee1XD
题意: 给个装着一定数量蛋糕的盘子,两个人轮流取一个盘子,每次取的盘子中的蛋糕数量不能少于上一个人取的数量。特殊的,如果剩下的盘子中的蛋糕数量都比上一次少,则取的人会一次性把剩下的盘子都取完,称为兜底。谁先取完谁输,问先手是否能赢,输出第一次取的盘子中的蛋糕数量或者。
题解: 若所有盘子中的蛋糕数量都一样,若为偶数先手必赢。我们由此向后推,发现若所有相同蛋糕数量的盘子都为偶数时,先手必赢,取蛋糕数量最少的盘子。若出现了奇数,先手为了不让自己兜底,只能取从大到小第一次数量为奇数的盘子。此时若这个盘子中蛋糕数量是最少的,那么先手会取完最后一盘或者兜底,必输;若不是最少的,后手必兜底,先手必胜。
AC代码
1 |
|
E Eat Grapes
solved by Sstee1XD
题意: 有一串链式葡萄,每个节点上都有若干颗葡萄。特殊的,对于最后一个节点,会额外连接一颗葡萄,但不算在它给你的数量里(例如有一个节点葡萄数量为,当它成为最后一个节点时,数量会变成)。两个人轮流取葡萄,每次可以在最后一个节点上取正整数个葡萄,当最后一个节点的葡萄数为,则倒数第二个节点就会成为最后一个节点,谁取完谁输,问先手是否能赢。
题解: 当节点上葡萄数为0时,只能直接取,其余情况下,都可以根据情况选择取完,或者取到只剩下一个葡萄让对手取,从而改变接下来会取到的节点的情况。因此谁先取到葡萄数不为0的节点,就能根据接下来的情况选择取法,达到必胜的状态。
AC代码
1 |
|
F Flag Scramble Competition
solved by Tryna
题意: 没有输入,直接输出题目文本中出现次数最多的字符。
题解: 队友有办法用python快速地找出来,但是因为训练比较随意,我从a试到了e就通过了。
AC代码
1 |
|
H Happy Time is Always Short
solved by Sstee1XD
题意: 每次进行区间清,并询问所有数中的最大值。
题解: 线段树区间更新,查询最大值。
AC代码
1 |
|
I Isolated Pointset
solved by Tryna
题意:给你若干个点,问你是否存在两个点的垂直平分线通过任意一个点
题解:除了1,2不满足,其余情况都存在。
AC代码
1 |
|
J Jiufeng’s Football Team
solved by Sstee1XD
题意:给你一张完全无向图,以及条边和边权值,没有涉及的边权值为,把个点分成数量可以不相同的两组,问同组内最大边权最小值。
题解:二分边权,然后考虑补图,将大于等于这个权值的边的两个顶点进行染色,找到能将补图染色成功的最小的边权值,答案即为下一个权值大小。注意每次要将第条边的权值设为,不然二分到最后的时候输出第条边的权值会。
AC代码
1 |
|
K Known-Well Palindrome Date-Easy Version
solved by Tryna
题意:一行给你若干串数字,让你判断有多少个回文日期,回文日期必须要满足以下两个条件。1.必须是一个合法的日期,即不能有1月32日这样的数字出现。2.必须满足是一个回文串。
题解:读入一行存进一个string中,从第0个位置暴力遍历到st.size()-7的位置,条件老老实实判断,比赛过程中因为没有判断年份是否合法wa了很多次。早上又想了一下发现其实不用判断闰年,闰年和平年只有2月不一样,如果是二月,那该年份一定是闰年 XX2002XX。
AC代码
1 |
|