简介
这是一份关于2024年CCF非专业级软件能力认证CSP-J/S第二轮认证提高级的详细题目和要求说明。以下是对您提供的信息的解读:
认证基本信息
时间:2024年10月26日14:30~18:30
题目类型:传统型(意味着题目可能是算法或数据结构相关的问题)
题目详情
决斗(duel)
可执行文件名:duel
输入文件名:duel.in
输出文件名:duel.out
时限:1.0秒
内存限制:512 MiB
测试点数目:20
测试点是否等分:是
超速检测(detect)
可执行文件名:detect
输入文件名:detect.in
输出文件名:detect.out
时限:2.0秒
内存限制:512 MiB
测试点数目:10(假设,因为原文中未明确给出但提到了“I0”,可能是个笔误,应为10或其他具体数字)
测试点是否等分:是
染色(color)
可执行文件名:color
输入文件名:color.in
输出文件名:color.out
时限:1.0秒
内存限制:512 MiB
测试点数目:20
测试点是否等分:是
擂台游戏(arena)
可执行文件名:arena
输入文件名:arena.in
输出文件名:arena.out
时限:1.0秒
内存限制:512 MiB
测试点数目:25
测试点是否等分:是
提交要求
源程序文件名:对于C++语言,应为duel.cpp、detect.cpp、color.cpp、arena.cpp
编译选项:对于C++语言,使用-O2 -std=c++14 -static
注意事项
文件名(程序名和输入输出文件名)必须使用英文小写。
main函数的返回值类型必须是int,程序正常结束时的返回值必须是0。
提交的程序代码文件的放置位置请参考各省的具体要求。
因违反以上三点而出现的错误或问题,申诉时一律不予受理。
若无特殊说明,结果的比较方式为全文比较(过滤行末空格及文末回车)。
选手提交的程序源文件必须不大于100KB。
程序可使用的栈空间内存限制与题目的内存限制一致。
全国统一评测时采用的机器配置为:Intel(R) Core(TM) i7-8700K CPU @3.70GHz,内存32GB。上述时限以此配置为准。
只提供Linux格式附加样例文件。
评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以此为准。
解析
1.决斗(duel)
题目解析
题目描述了一个关于“决斗怪兽”的游戏,其中小Q拥有一些卡牌,每张卡牌代表一只怪兽,怪兽的攻击力和防御力相等。在游戏中,小Q需要选择怪兽进行攻击,攻击的规则是若攻击者的攻击力大于被攻击者的防御力,则被攻击者退出游戏。一只怪兽最多只能发起一次攻击。目标是找到一种攻击顺序,使得游戏结束时未退出游戏的怪兽数量尽可能少。
思路分析
-
排序:
- 首先,我们可以将所有怪兽按照攻击力(或防御力,因为它们是相等的)进行排序。
-
贪心策略:
- 攻击力较低的怪兽更容易被击败,因此我们应该优先让攻击力较高的怪兽去攻击这些低攻击力的怪兽。
- 一个直观的策略是,每次让当前未攻击的怪兽中攻击力最高的去攻击剩余怪兽中攻击力最低的,这样可以最大化地减少未退出游戏的怪兽数量。
-
模拟攻击过程:
- 使用双指针或队列来管理当前可以攻击的怪兽和未被攻击的怪兽。
- 依次进行攻击,直到所有怪兽都发起过攻击或无法再进行有效攻击。
-
计数:
- 记录最终未被击败的怪兽数量。
实现细节
- 使用一个数组或向量来存储怪兽的攻击力(防御力)。
- 对该数组进行排序。
- 使