zoukankan      html  css  js  c++  java
  • [Arcaea] 查分器

    传送门 luogu U131424

    题目背景

    (Welcome ~ to ~Arcaea!)

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

    注:本题题目描述较为复杂。如果你的时间很紧张,请跳过这道题。实际上,本题的难度在红题到橙题之间。

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

    题目描述

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

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

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

      判定

      • Arcaea的判定分为 Pure,Far 与 Lost 三种,其中 Pure 分为 大Pure 和 小Pure 。

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

      • 大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

  • 相关阅读:
    Linux/UNIX套接字连接
    javascript 数组去重
    android开发步步为营之68:Facebook原生广告接入总结
    Java虚拟机内存区域堆(heap)的管理
    honeywell D6110开发的一个工厂仓库追溯识别
    [Asp.net MVC]Asp.net MVC5系列——添加模型
    [Asp.net MVC]Asp.net MVC5系列——添加视图
    [Asp.net MVC]Asp.net MVC5系列——第一个项目
    [SQL]死锁处理语句
    [EF]使用EF简单增删改查
  • 原文地址:https://www.cnblogs.com/EdisonBa/p/13932219.html
Copyright © 2011-2022 走看看