CSP-S 2021
CSP-S 2021
今年的题质量还是可以的,难度方面比去年简单一些。
一星表示是极其简单的题,我基本上可以秒。
二星表示是比较简单的题,我赛时可以比较快做出。
三星表示是中等难度的题,我赛时不确定能不能做出。
四星表示是较难的题,我赛时做不出。
五星表示是很难的题,我可能永远也做不出。
主要考虑思维难度。
打*号表示没有写的题,可能是不打算写了,也可能是暂时没来得及写。
题面写的可能有点暴躁,可以看原题面。
A. 廊桥分配
难度:
题目大意:
有
你可以将
- 如果它所属区域(国内/国际)还有空余廊桥,就会停在一个空余的廊桥上;
- 如果它所属区域没有空余廊桥,就无法停在廊桥上。
你需要求出在所有可能的分配方案中,最多有多少架飞机能停在廊桥上。
题目解法:
首先考虑证明一个事实:若可用廊桥数为
事实上,现在考虑有无限座廊桥,编号为
所以我们可以通过使用优先队列模拟无限座廊桥的情况求出
B. 括号序列
难度:
题目大意:
定义“超级括号序列”是由
-
- 如果
A,B 都是符合规范的,那么AB 或ASB 都是符合规范的; - 如果
A 是符合规范的,那么\texttt{(}A\texttt{)},\texttt{(}SA\texttt{)},\texttt{(}AS\texttt{)} 都是符合规范的。
其中
给定长度为
题目解法:
直接区间 DP,令
时间复杂度为
C. 回文
难度:
题目大意:
给定长度为
题目解法:
枚举第一次操作后就确定了最后一个选出来的数,整个序列就被分成两段。
简单做法:每次贪心,看能不能用某一侧的头和某一侧的尾匹配,并优先选择
我考场做法:
发现每个数有两种可能的位置:两次出现属于同一段,或者不属于同一段。
分析可以发现属于同一段的那些数,如果把它对应的区间定义为两次出现之间的部分,那么这些区间必定是一个套一个的。
此时如果有一个不属于同一段的数在这一段中的位置属于某两个区间端点之间的位置,就可以确定出它在最终序列里排在这两个区间对应的数之间。
按照这样的关系建图,利用拓扑排序选点。
时间复杂度为
D. 交通规划
难度:
题目大意:
有一个由
现在在网格边界向外延申的
题目解法:
首先考虑
(红色叉表示白色点,黑色叉表示黑色点)我们要求的就是从绿色点到紫色点的最短路,网格中和两个叉上的边权就是题目的输入。
考虑用更多黑白点会怎么样,我们一样可以按照颜色将外周的点分成绿紫两色连续段交替的形式,例如:
也就是把顺时针方向从红转到黑的这一段看成绿色,从黑转到红的这一段看成紫色。
那么答案等于什么呢?实际上就是将绿色连续段和紫色连续段一一匹配,最短路之和的最小值,可以发现将这些最短路上的边都删掉后可以保证红黑点之间都不连通。
注意到如果有交叉的匹配,那么交换一下可以使得最短路之和更小,所以最优方案中将连续段的匹配画成线后是不相交的,那么也就可以看成是括号匹配(只有嵌套和分离,没有相交),进行一个区间 DP 就可以计算了。
注意整个图是一个环,所以需要破环为链,复制两倍。
时间复杂度为