题目:ABC159 - D - Banned K
题目原文请移步下面的链接
- https://www.luogu.com.cn/problem/AT_abc159_d
- 参考题解:https://www.luogu.com.cn/problem/solution/AT_abc159_d
- 标签:
OI
、atcoder
、数学
、容斥原理
题解
思路(和思路无关的废话)
-
这是一道看题就有思路的题;
-
这是一道让我非常喜悦的题,我可以虐他了;
-
这是一道经典的排列组合题;
-
这是一道提交了3次才过的【普及-】题;
-
这是一道OI圈中【不开long long见祖宗】题;
-
这是一道最近10分钟就可以AC的题;
-
这是一道最近不会在做如此简单的题。
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
void best_coder() {
int n;
scanf("%d", &n);
unordered_map<int, LL> um;
vector<int> v(n);
for (int i = 0; i < n; ++i) {
scanf("%d", &v[i]);
++um[v[i]];
}
LL cnt = 0;
for (auto i : um) {
if (i.second > 1) {
cnt += i.second * (i.second - 1) / 2;
}
}
for (auto i : v) {
if (um[i] > 1) {
printf("%lld\n", cnt - (um[i] - 1));
} else {
printf("%lld\n", cnt);
}
}
}
void happy_coder() {
}
int main() {
// 提升cin、cout效率
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// 小码匠
best_coder();
// 最优解
// happy_coder();
// 返回
return 0;
}