A. Andryusha and Socks(Codeforces 782A)
思路
用一个支持高效查找和删除的数据结构(比如二叉搜索树)维护桌上的袜子就好了,而 STL 中的 set 容器正好能满足这个需求。
代码
#include <bits/stdc++.h>
using namespace std;
set <int> s;
int n, a, ans;
int main() {
// freopen("Input2.txt", "r", stdin);
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for(int i = 1; i <= 2 * n; i++) {
cin >> a;
if(s.count(a)) {
s.erase(a);
}
else {
s.insert(a);
}
ans = max(ans, (int)s.size());
}
cout << ans << endl;
return 0;
}
B. The Meeting Place Cannot Be Changed(Codeforces 782B)
思路
这题看问题类型和数据规模就很像二分查找。于是自然往这个方面想。
显然,如果要二分查找的话肯定查找的是最小的时间 tmin ,那么自然而然,问题转化为如何判定在给定的时间t内是否能让所有人聚集到某点 x 。应该注意到
对于某个人 i 我们是可以轻易求出其在