linch打歌
题目描述:
linch 非常喜欢玩Phigros,众所周知Phigros 是一款下落式音游((
Phigros屏幕底端有一条判定线。一首曲子有许多Tap键(可以看做一条与判定线平行的只有10.0宽度的线段),每个tap会在某个时刻从顶端匀速下落,而linch需要尽量精准地在每个tap 与判定线重合时点击它。由于linch可能在tap接触判定线之前就点击了,也可能在tap已经落到判定线之下时才点击。这时候,就需要考虑phigros的超宽松判定,以统计linch的完成情况。
有三种判定:Perfect,Good(您好)和 Miss(小姐)。(为简化题目,忽略Flick,Hold,Drag等键)
有以下几种情况:
1、linch点击的时间在某个tap下落至其与判定线重合的时间的3s前(记为 △t≥3.0,下同),则不产生判定效果。(无意义点击)
2、1.8≤△t<3.0,则此tap 产生miss判定并消失;
3、0.8≤△t<1.8或者−2.0<△t≤−0.8,则此tap产生good判定并消失;
4、−0.8<△t<0.8(负数代表在tap到达判定线之后点击),则此tap产生perfect 判定并消失;
5、△t≤−2.0,则此tap会落出屏幕,记miss 判定并消失(即在此tap落于判定线之下2.0s后自己产生miss判定),点击对此tap不会产生任何判定效果。
除此之外,phigros 还有最大连击(max combo)。连击(combo)是指从某一个非miss 的判定开始,到某一个非miss的判定结束(在这段区间内按时间顺序没有任何miss判定)。而 max combo 则指的是 combo 的最大值。
Phigros有效判定为点击该tap键正下方。每次点击只会对可能产生判定效果的tap中位置最低的一个产生判定。 也就是说,linch只有点击某个tap下方的位置才可能将其消除,并且若两个tap有上下相对距离地一起下落,那么如果点击可以使下面的tap消除,则一定不会使上面的tap消除。(优先判定距离屏幕上方最远的tap键)
Phigros中,一张谱面的分数最大值为1,000,000,由判定分(90万)与连击分(10万)相加得到。判定分由各tap的判定决定。tap达成perfect判定时,获得100%的判定分(可以视作判定分的满分90万与tap总数之比);达成good判定时,获得65%的判定分;其余判定均不获得任何判定分。连击分由最大连击数决定。最大连击数与谱面总物量之比是这部分分数的评判依据。计算方式为:最大连击数/总物量*100000 (就近取整)。
为了只用一根手指拿到最新的魔王曲的首杀(φ(Phi)),linch决定记住所有tap的起始位置和它们下落到判定线的时间。linch会提前决定在什么时间、什么位置点击。可是Sfly并不会计算linch可以得到的最终成绩,所以Sfly请你帮linch 算算他得到的max combo以及分数评级。(评级表在最下方)
请注意:由于linch手速很快,所以可能在同一时间点击两次(最多两次);如果同一时间有多个判定,按miss,good,perfect 的顺序依次处理。
输入格式:
第一行两个正整数 n,m代表tap数量与linch的点击数。
紧接着 n行,每行两个浮点数t,s分别表示每个tap从曲子开始算起到达判定线的时间和其左端点位置。
紧接着 m 行,每行两个浮点数T,x分别表示linch每次点击从曲子开始算起的时间和其位置。
输出格式:
输出共一行,表示linch所打谱面的maxcombo以及评级,中间用一个空格隔开。
样例输入:
5 5 1.5 0.0 1.0 45.0 1.8 80.0 2.3 10.0 2.3 42.5 0.1 10.0 1.7 50.0 1.9 60.0 3.0 45.0 3.1 15.0
样例输出:
4 F
提示:
1、题目保证所有tap键落在屏幕内,且浮点数最多到小数点后一位;
2、游戏的结算评级如下:
Φ | 1000000分 |
V | 960000~999999分 |
S | 920000~959999分 |
A | 880000~919999分 |
B | 820000~879999分 |
C | 700000~819999分 |
F | 0~699999分 |
3、由于知道dalao们很强,就不写样例解释了,数据点全部手打,如果您迟迟无法AC可能是我数据点打错了(
4、数据范围:对于所有数据1≤n,m≤1000;0≤x≤200;0≤s≤190
时间限制: 2000ms空间限制: 256MB
来源: Sfly