题目描述及样例
详见:
https://www.acwing.com/problem/content/4457/
思路:在线映射
用map来存每个变量是否被初始化即可。
C++ 代码
#include<bits/stdc++.h>
#define ios ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
using namespace std;
#define endl "\n"
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,n,a) for (int i=n;i>=a;i--)
#define fir first
#define sec second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef long long ll;
typedef pair<int,int> PII;
typedef double db;
mt19937 mrand(random_device{}());
#define ORZ cout << "Orz" << endl;
int rnd(int x) { return mrand() % x;}
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
int n, k, l, r, cnt = 0;
map <int, bool> mm;
int main(){
ios;
cin >> n >> k;
rep(i, 1, k){ // 在线操作
cin >> l >> r;
if (mm[r] != true && r != 0){ // 如果右值没出现过并且不为常数0的话
cnt++; // 答案++
}
mm[l] = true; // 更新该左值,表示已经被初始化过了
}
cout << cnt << endl;
return 0;
}
喜欢的话不妨表示一下~
666