周日翘课,参加了一下比赛。这还是第一次参加实时的比赛。。赛中被卡第三题,真是太囧了。
首先是比赛的时候,没理解题意。之后样例的输出更新了,然后开始进入不断卡题的状态。。。
Validate Stack Sequences
151 / 151 test cases passed.
Status: Accepted
Runtime: 4 ms
虽然是第2题,但题意比较简单。开场11分钟就先过了这题。
这里我用栈模拟push和pop操作,当pop操作不可取时,则尝试push操作。直到pop操作非法。
Bag of Tokens
147 / 147 test cases passed.
Status: Accepted
Runtime: 4 ms
一开始以为是DP,写了一半。发现可能可以用贪心水过去。贪心策略:
- face up. 优先开费Power少的Token,攒point
- face down. 直到power值不够用时,用point开最大的Token,攒power
Minimum Increment to Make Array Unique
59 / 59 test cases passed.
Status: Accepted
Runtime: 68 ms
开赛的第一题,读题的时候眉头一皱。。有点思路,但没有把握就放到第三题来做。
因为一次操作是选择一个元素,增加1,所以结果必然是递增的。差不多也是贪心策略,从当前最小值开始枚举最合适的值,使其唯一且操作次数最少。
Most Stones Removed with Same Row or Column
68 / 68 test cases passed.
Status: Accepted
Runtime: 1804 ms
比赛的时候,前三题用了41分钟。。还剩49分钟。理论上是可以完成比赛的。。
结果卡题了。。
一开始是模拟移除,10000*10000 的矩阵,遍历stones
枚举是否可以移除。提交了两次之后发现逻辑不对:模拟移除的一行或一列至少会保留一块石头,但实际上最多移除是可以不用保留的。
最后理解题意要求是:同行或同列的石头可以聚合为一块石头。使用并查集或 搜索遍历即可。
网友评论