1600-1900 题单1
1|0构造题单
1|1A
这个题目的切入点很不好找,首先我们可以假设我们已经构造出来了t字符串,并且它的不同字符的个数是cnt。那么我们可以知道
那么根据题目的意思是不是我们需要s串和t串相匹配的字符尽可能地多。假设at['a']表示是‘a'字符的出现的次数,这个时候我们只需要和
这个值就是某一个字符可以匹配的最长的长度,至于k我们for一下就好了因为最大值只有可能26,这也是时间复杂度控制的关键。
然后怎么替换多的字符以及增加少的字符呢,这里有一个贪心的思路:那就是我们先从那些出现次数多的字符串开始枚举,因为如果这个字符多了可以将其分配给别的字符,如果这个字符少了可以原地增加就好了。
下面解释下order的作用:他就是上面的按照某个字母出现的次数对字符排序。
这个题目还需要好好实现下代码,一点都不熟练。
1|2B
核心思路
这个其实就是一个很通用的构造方法。首先我们可知道的是我们肯定是需要构造出相邻的数对不超过m的数列。可以参考这种构造方式:
前提是需要进行逆序排序。
然后找出来不满足条件的逆序对,这个就可以使用二分了。写check的时候使用双指针扫一遍就好了。
1|3C
核心思路
待补,没有看懂什么。
1|4D
核心思路
这个题目肯定首先需要对式子化简把:
然后根据题意我们可以把最终的式子化简为:
再就是另外一个重要的结论:
x表示的是
- x>y,那么我们就把1全部都染成一种颜色,这样就不可能出现2了。
- x<y,那么我们就把0全部都染成一种颜色,这样就不可能出现0了。
1|5E
这个其实首先应该联想我们的常用的构造方法:
先分奇数和偶数
然后一个普遍的思路就是先放奇数再放偶数,但是我们可以发现先要把2和4先放了。
其实这个都是观察第三个构造发现的规律。
1|6F
核心思路
这个题目其实主要是一个模拟,刚开始我想用双指针模拟,然后发现那个区间长度不是很好处理。
因此我们可以使用set来对我们的区间长度进行拍排序。
这里有个很重要的关于set的语法,使用结构体进行处理。
1|7G
核心思路
这个题目我们一个很通用的思维是经可能的构造出来的1,但是这里数据范围是很大的。所以我们肯定不可以使用for循环的方式把1给解出来。
所以我们假设前面的k-3段都是1,那么后面的三个数的和就是
很显然先分奇偶分解:
- n为奇数,这个可以分为{1,n/2,n/2},并且最大公约数是n/2;
- n为偶数,这个就要注意了,我们如果分解为{2,n/2-1,n/2-1},那么这个的最大公约数是n-2,所以需要小于等于n/2,那么n就必须小于4.所以我们还得增加一个n%4的分类讨论。
1|8H
核心思路
首先我们可以先把所有的坏人的位置给找出来,然后给他的四周加上墙壁。然后就是最关键的地方。
我们直接从终点往回搜索,只要遇到不是墙壁的都给他打上标记。然后我们就只要看,好人是否被打上了标记,以及坏人是否没有标记。
1|9G
核心思路
这个题目的思路确实不太容易想到。
-
首先特判n==1,
-
然后就是n不等于1的情况
__EOF__

本文链接:https://www.cnblogs.com/xyh-hnust666/p/17154380.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律