当前位置: 首页>关注 >

复盘|第343场周赛|环球热门

2023-04-30 17:01:46 来源:哔哩哔哩


(资料图片仅供参考)

保龄球游戏的获胜者

【模拟】按题意模拟。

找出叠涂元素

【预处理 + 计数】先预处理,用pos数组记录mat[i] [j]在mat中的位置。然后遍历arr[i],用两个数组row_cnt和col_cnt记录每行每列的涂色个数,如果某行或某列被涂满了就返回i。

前往目标的最小代价

【Dijkstra】答案是start、target和特殊点构成的有向图上,start到target的最短路,用Dijkstra计算最短路。

字典序最小的美丽字符串

【贪心】长度为2的回文串就是两个相邻的相同字符,长度为3的回文串就是下标之差为2的两个相同字符。因此一个字符串是美丽的,当且仅当其中的每个字符与它前面两个字符都不相同。为了找到比s大的,同时又是最小的美丽字符串,先从最后一个字符s[-1]开始修改。因为答案要比s大,所以只能让s[-1]变大,且变化后不能和s[-2]以及s[-3]相同。如果能在字母表前k个字符中找到符合要求的字符,那么只要修改s[-1]就行了,否则还得修改s[n-2]。因为答案要比s大,所以只能让s[n-2]变大,且变化后不能和s[n-3]以及s[n-4]相同。从上述分析可以看出来,修改每个字符的流程都是一样的:如果要修改s[i],可以首先枚举字母表的前k个字符,看能否找到比s[i]大,但又和s[i-1]以及s[i-2]不同的字符。如果找到了即可结束流程,否则还得修改s[i-1],重复上述流程。如果已经改到s[0]还无法满足要求,那就是无解。如果修改s[i]就能满足要求,由于s[]已经比原来大了,后面的字符不管填什么,答案都会比s大。因此s[i+1]到s[n-1]只要贪心地填入与前两个字符不同的最小字符即可。因为k≥4,总能找到这样的字符。

关键词:

推荐内容