为了庆祝 UOJ Round #9 的成功开赛,主办方为大家准备了一桌包子晚宴。NOI出题人也被邀请参加了包子晚宴。
谁知包子晚宴吃到一半,突然主办方把面具一摘,露出他的真身 —— 奸笑熊:“还记得我吗?我就是因为你的寿司晚宴才没拿金牌的!”
NOI出题人大惊失色,原来这是鸿门宴!
奸笑熊一挥手,所有的门窗都被关闭了。奸笑熊掌心朝上,所有的包子都悬浮在了空中,再那么一指,所有的包子形成了一张大幕,朝NOI出题人飞去。
还好还好,NOI出题人玩过东方 Project,熟悉躲子弹的那一套理论。
我们假设晚宴所在的房间是二维的,是一个宽度为
我们以矩形左上角为原点,宽为
假设NOI出题人的位置在
一共
得分有两种途径:
- 不中弹得分:有
个时间区间 。如果在 这段时间内(包括首尾)没有任何一个子弹的圆与NOI出题人的中弹范围相交(包括外切、内切、内含),则获得 的分数; - 擦弹得分:每个子弹有一个擦弹得分
,如果一个子弹的圆与NOI出题人的擦弹范围在某个时刻相交(包括外切、内切、内含),则获得 的分数。若对同一个子弹多次擦弹,则只记一次。
一个子弹的中弹和擦弹判定只在整数时刻进行,即时刻
在时刻
NOI出题人不允许出房间,即NOI出题人的位置要在矩形内。
奸笑熊说只要NOI出题人获得的分数足够高就放他一马,于是现在NOI出题人想获得尽量高的得分。
输入格式
本题为提交答案题。所有输入数据 touhou1.in~touhou10.in 见数据下载。
对于每组数据,输入文件的第一行有七个数
第二行有一个正整数
接下来
接下来一行有一个非负整数
接下来
最后一行有一个数
输出格式
针对给定的
对于每组数据,输出文件只有一行
样例一
input
10 10 0 0 3 1 2 2 1 2 1 0 2 0 1 5 3 3 4 2 0 0 1 5 2 0 2 10 2 3 10 3
output
CDS
explanation
时刻
时刻
此时NOI出题人与子弹距离为
时刻
在时刻
时刻
在时刻
总得分为
评分方式
对于每组测试数据,我们设置了
得分 | 条件 | 得分 | 条件 |
---|---|---|---|
10 | 5 | ||
9 | 4 | ||
8 | 3 | ||
7 | 2 | ||
6 | 1 |
如果同时满足多个条件,则取最高分作为你的分数。
如何测试你的输出
在终端中先切换到该试题的目录下:(windows用户请使用cmd)
cd touhou
我们提供checker这个工具来测试你的输出文件是否是可接受的。使用这个工具的方法是,在终端中运行
./checker_linux64 <case_no>
其中case_no
是测试数据的编号。例如
./checker_linux64 3
将测试 touhou3.out 是否可以接受。(windows用户请使用checker_win32 3
)(什么你是windows 64位?放心吧可以运行win32应用程序的。)
当然我们有对应的linux 32位版本:checker_linux32
。如果linux用户发现无法运行程序,请尝试执行chmod +x checker_linux64
或chmod +x checker_linux32
后重试。
其它操作系统请安装 node.js 然后使用 node checker.js <case_no>
运行checker。
在你调用这个程序后,checker将根据你给出的输出文件给出测试的结果。
为了方便你调试,我们提供的 checker 中还增加了一些功能。你在使用 checker 时可以调用选项来获得一些额外的信息。可调用的选项包括:
–p
:输出每个时刻角色所在的位置。–m
:输出每次中弹的相关信息。–g
:输出每次擦弹的相关信息(对同一个子弹多次擦弹只输出第一次)。–t
:在每个时间区间结束时显示是否获得不中弹得分。–x
:将调用以上四种选项所产生的信息不输出到屏幕上,而是输出到对应的 touhou*.log 文件中。
调用选项的方法如下例所示:
./checker_linux64 3 –m –g –x
将检查 touhou3.out 是否可以接受。如果 touhou3.out 可以接受,则在输出得分的同时将每次中弹和擦弹的相关信息输出到 touhou3.log 中。
以上所有信息均按时间顺序输出。
注意比赛时提交此题显示的成绩就是最终成绩。