电子科技大学第十一届 ACM 趣味程序设计竞赛第四场(正式赛)题解
A. 天气之子
题目描述
给定
数据范围:
题解
显然有一个
仍然考虑从左向右枚举。对于后面的数整体加
需要注意数据范围和数据类型的使用。
时间复杂度:
Problem Setter: Vingying
P.S. P for Park ^ ^
B. 夜路
题目描述
给定一个
数据范围:
题解
考虑如果可以走到一行,那么走到这行就有这行空位数那么多种方法。在判断掉非法状态后,利用乘法原理统计即可。如果能够走到底部,答案为 ..
行数次方(除去第一行)。
这道题有一个显而易见的 DP 做法。实际上,DP 与这样统计是等价的。还需要注意范围与数据类型的使用。
时间复杂度:
(因为每行判断是否合法只取决于这一行与上一行的状态,可以只保存这两行的状态以达到空间最优,但是对于本题来说没有太大必要)
Problem Setter: OrangeRain
C. 蔚蓝
题目描述
给定两个数列,每一个都有
数据范围:
题解
本题可以看成一个集合划分问题,但是由于这道题的特殊性,我们可以换用其他解法。
首先,我们把原数组中的一个当做最终的答案数组,这里不妨设将
具体证明可以利用调整法,对于最优状态下任意一个被换走的
(这道题甚至可以输出方案,扩大范围或者问有多少种方案)(废话
这里并没有卡排序,写复杂度合理的各种排序算法均可,根据题目数据范围写桶排序或者基数排序也可(但是需要注意负数的处理)。
时间复杂度:
Problem Setter: hbji
D. 外星货币
题目描述
求集合
数据范围:
题解
考虑这个集合
这样考虑递推,根据性质,如果集合
当
因为要求最小数目,所以答案为第一个
根据递推关系,可知通项为
还有一份来自 ZXyaang 的题解。对于一种货币的面值,如果计入答案的话可以有三种选择:加,减或者不选。只要规定一个值是加,比他小的所有面值都可以选择三态中的一个,所以每多选一个货币新增
时间复杂度:
Problem Setter: qqq17770027225
E. 马拉松
题目描述
给定
数据范围:
题解
是不是感觉和大地的裂变有点像?
考虑两人相遇满足什么条件。考虑两人起始点分别为
对于第一个式子,移项可得
两式联立,可化简为
即,如果两人相遇,需要满足:
(原来想卡 log 的但是被 Java 无情地拒绝了)
时间复杂度:
Problem Setter: santongding