专栏文章

题解:P14575 坤班

P14575题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min245oi
此快照首次捕获于
2025/12/01 19:19
3 个月前
此快照最后确认于
2025/12/01 19:19
3 个月前
查看原文
考虑二分班级数量,设二分到的答案为 xx,则需要满足两个条件:
  1. 当班主任的人数 x\ge x
  2. fif_i 表示学科 ii 能教到 fif_i 个班级,则 mini=1nfix\min_{i=1}^nf_i\ge x
numinum_i 表示教学科 ii 的老师有多少愿意当班主任,则对于每个学科,已知二分班级 xx,可以得到这个学科最多能有 min(numi,fix)\min(num_i,f_i-x) 个老师当班主任。

代码

CPP
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;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...