TAG- 芝士水题、算法 − 【数学 − 乘法原理】 芝士水题、算法 - 【数学 - 乘法原理】 芝士水题、算法−【数学−乘法原理】时间复杂度- O ( N ∗ log N ) O(N \ast \log N) O(N∗logN)
//
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MOD = 1e9 + 7;
const int N = 1e5 + 6;
map<int, int> mp;
void solve() {
int n;
scanf("%lld", &n);
for (int i = 1; i <= n; i++) {
int ai;
scanf("%lld", &ai);
mp[ai]++;
}
int ans = 1;
for (auto [x, y] : mp) {
ans = ans * (y + 1) % MOD; // 不选也是一种方案
}
printf("%lld\n", ans - 1); // 不能所有都不选
}
signed main() {
int t = 1;
// scanf("%d", &t);
while (t--) solve();
return 0;
}
实现细节
- `
参考示意图
-
`
参考链接
- `
作者 | 乐意奥AI
本文介绍了一道基于乘法原理的芝士水题解法,用C++实现,通过map数据结构统计整数出现次数,时间复杂度为O(N*logN)。代码展示了如何计算选择方案的数量并排除全不选的情况。
1052

被折叠的 条评论
为什么被折叠?



