acwing蓝桥杯 枚举,模拟,排序

150 阅读2分钟

本章tipcs,字符串读取: //www.acwing.com/blog/conten…

1204. 错误票据

www.acwing.com/problem/con…

ps: 这道题的输入输出,并不是让我们输出多少个数,而是让我们按行输出,所以我们可以用getline():

image.png

这道题让我们求重号断号

根据题目已知条件,题目会给我们一个有序序列,因此,我们对序列排个序,那么这个序列一定是连续升序序列。

我们扫描当前序列。当前序列比前一个序列的序列号大2时,那就一定找到断号了。当当前序列和前一个序列的序列号相等时,那么就找到重号了。

image.png 代码托管 www.acwing.com/solution/co…

1245. 特别数的和

www.acwing.com/problem/con…

思想:枚举

image.png 代码托管:www.acwing.com/solution/co…

1210. 连号区间数

www.acwing.com/problem/con…

所谓的连号区间就是给定一个序列,把这个序列进行升序排序后,会变为一个递增排列,差值为1的序列

给定序列:

image.png

我们任意选取一段,假设我选 3 2 4,然后将3 2 4进行排序,得到2 3 4 。因此3 2 4是一段连号区间。

把所有连号区间的情况枚举出来:

长度为4的连号区间只有一个:

image.png

长度为3的连号区间只有一个: (3,2,1),(2,4,1)不是

image.png

长度为2的连号区间只有一个:(3,2),(4,1)不是。

image.png

长度为4的连号区间有4个:

image.png

所有情况的集合:1+1+1+4=7

暴力枚举

我们可以先用两次for循环遍历一遍序列,然后用用sort排序

接下来我们需要判断是否满足条件,所以还需要再遍历一遍序列

如果满足条件,flag就为true,否则就为flase。

时间复杂度:

一共有三个for循环,再加一个sort()

时间复杂度为O(n^3+nlogn)。

image.png

详细代码//www.acwing.com/solution/co…

1236. 递增三元组

www.acwing.com/problem/con…

没有思路就先用暴力求解:

三个for循环遍历一下,然后判断,满足条件就计数器++:

image.png

代码托管: www.acwing.com/solution/co…

时间复杂度O(n^3),题目给的限制为

image.png

(10^5)^3=10^5 * 10^5 * 10^5 =O(10^15) 因此肯定超时了,不过蓝桥杯可以通过60%