华中师范大学2023级程序设计新生赛
难度梯度:
根据官方数据:
- 签到:A, J
- Easy:B, C, L, M
- Mid:D, G, H
- Hard:E, F, I, K
A. 2024
思路:
- 可以直接看右下角日历
时间复杂度:
1 | n = int(input()) |
J. 简化双星问题
思路:
- 首先,看到这个题目的万有引力公式,可以发现可以约掉
和 然后公式可以转换为
- 然后我们运用初中学习的一元二次方程的求根公式可得:
- 还要特判当
和 相等时,输出
附:
时间复杂度:
1 | signed main() { |
B. 硬币
思路:
- 当总数为奇数,并且取的个数为偶数时,一定无解,最后会发现无论怎么取,都会剩下最少一个无法被翻动
时间复杂度:
1 | void solve() { |
C. 校庆
思路:
- 首先考虑形如
这样的数字,可以发现这样的数字满足 所以首先判断一下个位数和这种数字 - 然后,开始
,如果为第一位数,这样需要保证没有前导零,所以从 开始,否则从 开始 - 这个
函数中, 为当前是第几位, 为当前这个数是多少, 为还可以选的数位的数位的和
时间复杂度:最坏
1 | void solve() { |
L. 按位与
思路:
- 贪心,每次贪心一个数的两个位都为
1
的数字集合,然后最后将最终结果的首个数字输出即可,那么最后一个序列的首位一定是相同位数为1
最多的那两个数
时间复杂度:
1 | signed main() { |
M. K相等计划
思路:
- 可以发现,要让
个数字相等,那么一定是其他 个数字与原始子段长度为 的差值最小,然后我们枚举取 即可
时间复杂度:
1 | constexpr i64 inf = LLONG_MAX; |
H. 龙
思路:
- 有
个宝石孔,那么每个宝石进入孔的概率为 ,所以其留下的概率为 ,所以最大总收益为
1 | constexpr int P = 998244353; |