0%

思路讲解

这个子集确实还可以,不是很难,就是卡一下这个折半搜索01树。

你用线性基做基本不会被卡。

AC代码

心路历程(WA,TLE,MLE……)

思路讲解

【线性基【力扣周赛 460】】 https://www.bilibili.com/video/BV1pm8vzAEXx/?share_source=copy_web&vd_source=6ca0bc05e7d6f39b07c1afd464edae37

AC代码

https://leetcode.cn/problems/partition-array-for-maximum-xor-and-and/submissions/649067731/

心路历程(WA,TLE,MLE……)

思路讲解

核心就是知道可以发多少个月,就可以知道总共可以发多少个人次,一个人最多可以发多少钱。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
auto check=[&](ll mid){
// 我们一共可以给mid*P个人次发钱。
ll chance=mid*P;
vpll rem;
ll ans=0;
FOR(i,1,N){
ll a=A[i-1];
ll ci=min({a/K,mid,chance});
chance-=ci;
ans+=ci*K;
ll r=a-K*ci;
if(r>0) rem.EB(r,mid-ci);
}
if(chance<=0){
if(ans>=M){
return true;
}else{
return false;
}
}
sort(all(rem),greater<>());
for(auto [v,ci]:rem){
if(chance==0) break;
if(ci>0) ans+=v,chance--;
}
if(ans>=M){
return true;
}else{
return false;
}
};

AC代码

https://acm.hdu.edu.cn/contest/view-code?cid=1176&rid=8395

心路历程(WA,TLE,MLE……)

思路讲解

很复杂?很难?其实枚举就好了。

AC代码

https://acm.hdu.edu.cn/contest/view-code?cid=1176&rid=11903

心路历程(WA,TLE,MLE……)

思路讲解

image

离AC之差一步之遥。

那为什么要倒着遍历那?说实话,我也不知道。

这个是

证明:上述过程相当于,一开始将所有的左括号放在前 n 个位置,即字
典序最小的合法括号串。当枚举到的区间带来硬性需求时,我们将最靠
右的左括号移动到当前区间的左端点。这样的操作显然是最优的。时间
复杂度 O(n + m log m)。

AC代码

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=78588028

还有一种树状数组解法。

心路历程(WA,TLE,MLE……)