前言
题解
RC-u1 谁拿冠军了?
分值:15 分
考察点:hash 表的使用
注意点:明明某一天里,可能存在多个相同操作,需要求其总和,在除 2。
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m; cin >> n >> m;
int A1, A2, B1, B2, B3; cin >> A1 >> A2 >> B1 >> B2 >> B3;
// 利用 array<int, 2> 表示二元组 (d,op)
map<array<int, 2>, int> ops;
for(int i = 0; i < n; i++){
int d, op; cin >> d >> op; ops[{d, op}] += 1;
}
// 题意保证 一天最多一个操作
map<int, int> ban;
for(int i = 0; i < m; i++){
int t, op; cin >> t >> op; ban[t] = op;
}
int sw1 = 0, sw2 = 0;
for(auto [k, cnt]: ops){
auto [d, op] = k;
// 减半影响的操作
if(ban.count(d) && ban[d] == op){
if(op == 1){ sw1 += A1 * cnt; sw2 -= B1 * cnt / 2; }
else if(op == 2){ sw2 -= B2 * cnt / 2; }
else (op == ){ sw1 -= A2 * cnt; sw2 -= B3 * cnt / ; }
} {
(op == ){ sw1 += A1 * cnt; sw2 -= B1 * cnt; }
(op == ){ sw2 -= B2 * cnt; }
(op == ){ sw1 -= A2 * cnt; sw2 -= B3 * cnt; }
}
}
cout << sw1 << << sw2 << ;
;
}


