P10899 [蓝桥杯 2024 省 C] 劲舞团 题解

· · 题解

去年的题解,写挂了一个地方,已重新提交,求通过。

第一遍 WA 了,然后发现一个小坑(但不多)。

题目传送门:P10899 [蓝桥杯 2024 省 C] 劲舞团

题目分析

一眼简单的模拟,重复读入两个字符判断是否相等即可。同时记录上次时间,与本次比较。如果不满足连击的条件就把 K 清零。(由于时间戳是毫秒)所以如果两者相差不超过 1000 且敲击与给出的键位相等,连击的 K 就加 1。最终选择最大的 K

坑点:如果你不将 K 每次重置为 1,那你在比较 K 的时候需要将结果 +1,因为 K 连击的第一次由于时间戳的关系不会被记录。

每次判断完要把“上次时间”更新为本次时间。

此外,最后一次 K 连击若连击到末尾则需要单独与答案比较,因为我们没有下一个断击来更新它了。

代码编写

此处不应使用 int,因为从下发文件可以看出,最早 1709446139591 也远远大于 2^{31}。可以用 long long,由于读入的都是正数,所以推荐使用无符号版的 unsigned long long。

#include<iostream>
using namespace std;
unsigned long long ntime,ftime,ansK,sumK;
int main(){
    char n,m;
    while(cin>>n>>m>>ntime){
        if(n==m&&ntime-ftime<=1000)sumK++;
        else{
            if(sumK+1>ansK)ansK=sumK+1;
            sumK=0;
        }
        ftime=ntime;
    }
    cout<<max(ansK,sumK);
    return 0;
}

AC 记录。

彩蛋

根据时间戳的转换可以得出,小蓝是在 2024 年 3 月 3 日 14:08 左右开始的游戏,结束于 14:33。二十五分钟最大连击 9 次,这游戏真难啊