CSP 2020 提高组第一轮

Lisa

去年考的这东西

今年写写解析

T3 为什么是位,当然就是说一个比特啦

然后×起来就可以了

T15背过呗

然后没啥好说的了

阅读程序

T1

1 1000是必挂好不好

2 如果是个常数列呢

3 没错,例如递增序列和递减序列

4 当然,因为这个i和j互换也是会出现的

5 128的二进制全是1,那样的话ans必为128

6 A的最多显然是没有道理的,因为最低为不会变,但是只有一个偶数的话必挂

因为最低为肯定是1,如果输出为奇数,只有一个奇数是可能的,但是奇数特别多显然也是可以的

\(T2\) 这就是个快读排序求第k大而已

1放屁,怎么可能没有l、

2 只是一个死循环而已,不叫”运行错误“

3 其实这玩意没有正确答案来着

4 快排啊,这么有规律的组合,当然是O(n)次就可以翻过来啥的

5平均复杂度就是快排的极限了O(n),但是惨的话每次只能少一个数字,那就是\(O(n^2)\)

6 都为同一个数的话也就是无论如何比较都是没有意义的吗,模拟一下每一次都会把d--跑到L,这样的话每次划分都是非常不均匀的,所有\(O(n^2)\)

\(T3\)这是个啥?

手写的map和queue,然后bfs,给定初始字符串和最终字符串,然后给定m,可以旋转前m个数或者后m个数,问能否得到最终字符串

选择双向bfs

1 显然

2 这左转和右转转起来都不一样了,怎么可能对呢

3 这个程序又不会把全排列跑一边

4 手动模拟计算需要转多少圈,我们这道这个bfs想干啥了,所以说呢,我们只要转一个串,看看能不能转出另外一个串就可以了,然后转不出来了

5 什么鬼东西,插值

6 注意一下两次旋转中为与m的位置是可以向左或向右都可以的,也就是说可以交换左右的字符的,然后搞几个小数据,就可以发现是C了

上一篇:C刷题:LeetCode 752. 打开转盘锁 (中等) || BFS广搜详解


下一篇:【bfs】洛谷 P1443 马的遍历