第 325 场周赛
Date: 2022-12-25
A 到目标字符串的最短距离
暴力即可
复杂度分析
- 时间复杂度:\(O(nm)\)
- 空间复杂度:\(O(1)\)
B 每种字符至少取 K 个
双指针,哈希,贪心
复杂度分析
- 时间复杂度:\(O(n)\)
- 空间复杂度:\(O(n)\)
C 礼盒的最大甜蜜度
二分
复杂度分析
- 时间复杂度:\(O(n\log C)\)
- 空间复杂度:\(O(1)\)
D 好分区的数目
先求出所有区分的数目 \(2^n\),然后求出不是好区分的数目(从中选出小于 \(k\) 的方案数),两者减去就是答案。
class Solution {
public:
static constexpr int mod = 1E9 + 7;
int countPartitions(vector<int>& nums, int k) {
long long s = accumulate(nums.begin(), nums.end(), 0ll);
if (s < 2 * k) return 0;
int sum = 1;
for (int i = 0; i < nums.size(); i++) sum = sum * 2 % mod;
vector<int> d(k + 1);
d[0] = 1;
for (auto x : nums) {
for (int i = k; i >= x; i--) {
d[i] = (d[i] + d[i - x]) % mod;
}
}
int res = 0;
for (int i = 0; i < k; i++) {
res = (res + d[i]) % mod;
}
res = res * 2 % mod;
return ((sum - res) % mod + mod) % mod;
}
};
复杂度分析
- 时间复杂度:\(O(nk)\)
- 空间复杂度:\(O(k)\)
T2 细节比较多,被卡了很久
本文访问 次