传送门 luogu U131424
题目背景
(Welcome ~ to ~Arcaea!)
EdisonBa 担任 (Arcaea) 的查分任务。但是,每天有 (∞) 位选手需要查分,由于 EdisonBa 的查分器太蒻了,所以,他请你来帮忙给这些选手查分。
注:本题题目描述较为复杂。如果你的时间很紧张,请跳过这道题。实际上,本题的难度在红题到橙题之间。
Update:2020.12.2 因为之前的数据过于卡人,所以重新造了数据,确保你不会爆零。
题目描述
-
在 (Arcaea) 中,每一首单曲都有一张铺面(谱面)。一张铺面总是由 (n) 个单键 (Note) (物量)组成。当你用手击打每个单键时,这个单键会且仅会产生一种判定。一个单键产生一次判定时会得到单个键的分数。结束一张铺面之后,就能得到这次练习的总分(结算分数)。
同样地,一张铺面根据难度不同,有一个相应的铺面定数。一张铺面的定数是这张铺面特有的不变量。当你练习完毕,即击打完这一铺面的所有按键之后,根据你的结算分数和铺面定数,可以计算出本次练习的潜力值(Potential,简称ptt)。
具体计算方式见下面叙述。
判定
-
Arcaea的判定分为 Pure,Far 与 Lost 三种,其中 Pure 分为 大Pure 和 小Pure 。
-
大Pure:单键判定时间前后25ms以内
-
小Pure:单键判定时间前后50ms,并且不满足大Pure的条件。
大Pure、小Pure的叫法仅为称呼方便,实际练习中Pure的显示大小没有区别。
-
Far:单键判定时间为前后100ms,并且不满足Pure的条件。显示为音符处的黄色 FAR 。
-
Lost:在前后100ms内未击中或提前100-120ms击中单键。显示为音符处的红色 LOST 。Lost 会导致断连。
-
若练习一张谱面时,每个音符都得到 Pure(不管是 大Pure 还是 小Pure),最终将得到 “Pure Memory”(简称PM)评价。
计分方式
计分方式分为基本分和判定附加分两部分
- 基本分:满分为10000000,单个 Note 的分数为(10000000/谱面Note总量),游玩过程中每个 Pure 判定可以获得完整的单键分数,Far 获得一半的单键分数,Lost 不得分。
- 判定附加分:每个 大Pure 会额外加1分,其他判定均不加分,附加分无上限。拿到所有附加分时,即成绩为(10000000+谱面Note总量)时的成绩成为理论值。
-
单次成绩 (ptt) 计算
单次成绩 ptt 与分数的关系为:
一些特殊点见下:
分数 | 单次成绩 ptt |
---|---|
>10,000,000 | 定数+2.00(屏蔽物量影响) |
10,000,000 | 定数+2.00 |
9,900,000 | 定数+1.50 |
9,800,000 | 定数+1.00 |
9,500,000 | 定数 |
9,200,000 | 定数-1.00 |
8,900,000 | 定数-2.00 |
单次成绩 ptt 下限为 0。即如果定数是 1.00,你打了非常低的分数,单曲 ptt 不会变成负数。
- 注意1:在计算分数过程中请全程使用小数形式 (double)计算,最后的总分直接截掉小数部分,最终化为整数时请不要四舍五入。
- 注意2:计算 (ptt) 过程中也使用小数形式 (double)计算,但最后的 ptt 需要四舍五入,保留两位小数。
输入格式
输入共两行。
第一行是一行字符串,为该曲目的名称,其中可能包含空格。
第二行有4个数字。分别为总 Pure 数量 (p),大 Pure 数量 (a),FAR 数量 (b),LOST 数量 (c) 和铺面定数 (d)。
其中,(p,a,b,c) 为四个非负整数((aleq p)),(d) 为一位小数 ($0leq d leq 15 $ )。
输入数据保证单曲物量不会超过 2000 ,即不会出现没有 PM 但是结算分数超过 10000000 的情况。
输出格式
输出共两行。
第一行为结算时的分数,共八位数字,不足八位需要补零。
第二行为本次练习的 ptt,须保留两位小数。
具体请见样例及样例解释。
输入输出样例
输入 #1
Tiferet
1081 984 3 2
10.0
输出 #1
09968755
11.84
输入 #2
dropdead
44 43 0 0
1.0
输出 #2
10000043
3.00
输入 #3
chronostasis
777 666 84 55
9.1
输出 #3
08941714
7.24
输入 #4
inkar-usi
0 0 1 462
7.5
输出 #4
00010799
0.00
说明/提示
数据特殊范围
注:本题测试采用子任务捆绑测试,一个子任务中的测试点必须全部通过才能得到该测试点相应的得分.
子任务编号 | 满足性质 | 分值 |
---|---|---|
1 | 没有击打任何 Note | 10 |
2 | 所有的 Pure 均为 大Pure | 15 |
3 | PURE MEMORY | 15 |
4 | 单曲 ptt 为 0.00 | 15 |
5 | 保证歌曲的名称中没有空格 | 20 |
6 | 无特殊限制 | 25 |
样例1得分解释:
某玩家在一次练习的时候打出了 1081个 Pure ,(在这 1081Pure 中有 984 大Pure),3Far,2Lost 的成绩。可计算出该谱面物量 (n) 为1086。Pure 每个音符得分为 9208.103,总分即为
1086×? + 3×0.5×? + ? = 9968755.639
"?" 部分请选手自行思考。
截掉小数部分,得分显示为 09968755。
- 提示:在 (C)++ 中,截掉小数部分可以把 double 形式的数强制转换为 int ;保留两位小数且四舍五入可以使用 .2f 。
由于 ptt 的计算比较容易,请各位自行计算。
附件下载
arc22.in 35B
arc22.out 14B