题解:P14575 坤班
leather_handbag · · 题解
考虑二分班级数量,设二分到的答案为
-
当班主任的人数
\ge x 。 -
设
f_i 表示学科i 能教到f_i 个班级,则\min_{i=1}^nf_i\ge x 。
设
代码
int n,m,a,b,c,cnt[N],sum,num[N];
bool check(int x){
rep(i,1,m) if(cnt[i]<x) return 0;
int res=0;
rep(i,1,m) res+=min(num[i],cnt[i]-x);
return res>=x;
}
signed main(){
read(n,m);
rep(i,1,n){
read(a,b,c);
if(c) num[a]++;
sum+=b;
cnt[a]+=b;
}
int l=0,r=sum;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid)) l=mid+1;
else r=mid-1;
}
cout<<l-1;
return 0;
}