『题解』Luogu P8086 『JROI-5』Music

题目传送门

题目大意

给定 \(n\) 条听歌记录,每条给定两个整数 \(x,t\),表示听了编号为 \(x\) 的歌 \(t\) 分钟。总听歌时间为所有有效记录的 \(t\) 的总和。

\(t \le 1\) 那么这条记录是无效的。

对于某首歌,只有第一条有效记录会被计算,重复听的记录无效

思路

挺良心的一道签到题。蒟蒻除了这题都不会做啊。

用一个数组 \(m\) 来标记这首歌是否记录过。注意,若当前记录无效,则不标记 \(m_x\),也不累加 \(t\)

那么,对于每条听歌记录,只需先判断无效情况,之前是否记录过,若都为假,那么就标记,累加,最后输出累加结果即可。

代码

#include <iostream>
using namespace std;
typedef long long ll;
int n,x,t,m[100000005];
ll ans;

int main(){
    cin >> n;
    while(n--){
        cin >> x >> t;
        if(t<=1) continue; // 无效
        if(m[x]) continue; // 记录过
        m[x]=1; // 标记&累加
        ans+=t;
    }
    cout << ans << endl;
    return 0;
}
posted @ 2022-01-31 10:23  仙山有茗  阅读(24)  评论(0编辑  收藏  举报