Loading

[Arcaea] 查分器

传送门 Luogu U131424

题目背景

\(\text{Welcome to Arcaea!}\)

\(\text{EdisonBa}\) 担任 \(\text{Arcaea}\) 的查分任务。但是,每天有 \(\infty\) 位选手需要查分,由于 \(\text{EdisonBa}\) 的查分器太蒻了,所以,他请你来帮忙给这些选手查分。

\(\text{Update}\): 2020.12.2 因为之前的数据过于卡人,所以重新造了数据,确保你不会爆零。

题目描述

\(\text{Arcaea}\) 中,每一首单曲都有一张铺面(谱面)。一张铺面总是由 \(n\) 个单键 (\(\text{Note}\)) (物量)组成。当你用手击打每个单键时,这个单键会且仅会产生一种判定。一个单键产生一次判定时会得到单个键的分数。结束一张铺面之后,就能得到这次练习的总分(结算分数)。

同样地,一张铺面根据难度不同,有一个相应的铺面定数。一张铺面的定数是这张铺面特有的不变量。当你练习完毕,即击打完这一铺面的所有按键之后,根据你的结算分数和铺面定数,可以计算出本次练习的潜力值(\(\text{Potential}\),简称\(\text{ptt}\))。

具体计算方式见下面叙述。

判定

  • \(\text{Arcaea}\) 的判定分为 \(\text{Pure}\)\(\text{Far}\)\(\text{Lost}\) 三种,其中 \(\text{Pure}\) 分为 大 \(\text{Pure}\) 和 小 \(\text{Pure}\)

    Play hit pure.png Play hit far.pngPlay hit lost.png

  • \(\text{Pure}\):单键判定时间前后 \(25ms\) 以内

  • \(\text{Pure}\):单键判定时间前后 \(50ms\),并且不满足大 \(\text{Pure}\) 的条件。

    \(\text{Pure}\)、小 \(\text{Pure}\) 的叫法仅为称呼方便,实际练习中 \(\text{Pure}\) 的显示大小没有区别。

  • \(\text{Far}\):单键判定时间为前后 \(100ms\),并且不满足 \(\text{Pure}\) 的条件。显示为音符处的黄色 \(\text{FAR}\)

  • \(\text{Lost}\):在前后 \(100ms\) 内未击中或提前 \(100\sim 120ms\) 击中单键。显示为音符处的红色 \(\text{LOST}\)\(\text{Lost}\) 会导致断连。

  • 若练习一张谱面时,每个音符都得到 \(\text{Pure}\)(不管是 大 \(\text{Pure}\) 还是 小 \(\text{Pure}\)),最终将得到 \(\text{“Pure Memory”}\)(简称 \(\text{PM}\))评价。

计分方式

计分方式分为基本分和判定附加分两部分

  • 基本分:满分为 \(10000000\),单个 \(\text{Note}\) 的分数为 \((10000000 \div 谱面 \text{Note} 总量)\),游玩过程中每个 \(\text{Pure}\) 判定可以获得完整的单键分数,\(\text{Far}\) 获得一半的单键分数,\(\text{Lost}\) 不得分。
  • 判定附加分:每个 大 \(\text{Pure}\) 会额外加 \(1\) 分,其他判定均不加分,附加分无上限。拿到所有附加分时,即成绩为\((10000000+谱面 \text{Note} 总量)\)时的成绩成为理论值。

单次成绩 \(\text{ptt}\) 计算

单次成绩 \(\text{ptt}\) 与分数的关系为:

一些特殊点见下:

分数 单次成绩 \(\text{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\)

单次成绩 \(\text{ptt}\) 下限为 \(0\)。即如果定数是 \(1.00\),你打了非常低的分数,单曲 \(\text{ptt}\) 不会变成负数。

  • 注意1:在计算分数过程中请全程使用小数形式\(\text{(double)}\)计算,最后的总分直接截掉小数部分,最终化为整数时请不要四舍五入

  • 注意2:计算 \(\text{ptt}\) 过程中也使用小数形式\(\text{(double)}\)计算,但最后的 \(\text{ptt}\) 需要四舍五入,保留两位小数

输入格式

输入共两行。

第一行是一行字符串,为该曲目的名称,其中可能包含空格。

第二行有 \(4\) 个数字。分别为总 \(\text{Pure}\) 数量 \(p\),大 \(\text{Pure}\) 数量 \(a\)\(\text{FAR}\) 数量 \(b\)\(\text{LOST}\) 数量 \(c\) 和铺面定数 \(d\)

其中,\(p,a,b,c\) 为四个非负整数\((a\leq p)\)\(d\) 为一位小数\((0\leq d \leq 15 )\)

输入数据保证单曲物量不会超过 \(2200\) ,即不会出现没有 \(\text{PM}\) 但是结算分数超过 \(10000000\) 的情况。

输出格式

输出共两行。

第一行为结算时的分数,共八位数字,不足八位需要补零。

第二行为本次练习的 ptt,须保留两位小数。

具体请见样例及样例解释。

输入 #1

Bamboo  
1049 974 1 0
9.9

输出 #1

09996212
11.88

输入 #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\) 没有击打任何 \(\text{Note}\) \(10\)
\(2\) 所有的 \(\text{Pure}\) 均为 大 \(\text{Pure}\) \(15\)
\(3\) \(\text{PURE MEMORY}\) \(15\)
\(4\) 结算时单曲 \(\text{ptt}\)\(0.00\) \(15\)
\(5\) 保证歌曲的名称中没有空格 \(20\)
\(6\) 无特殊限制 \(25\)

提示:在 \(\text{C++}\) 中,截掉小数部分可以把浮点数强制转换为整形;保留两位小数且四舍五入可以使用 %.2f

推荐

相关链接

posted @ 2020-11-05 16:03  EdisonBa  阅读(16355)  评论(4编辑  收藏  举报