P1109 学生分组 贪心
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1109 学生分组 贪心相关的知识,希望对你有一定的参考价值。
https://www.luogu.com.cn/problem/P1109
我们首先要找到有多少人多余上限需要调走(用a表示)
所有缺少人数的组需要多少人来补(用b表示)
那么,最优的办法当然是让a去补b
因为不知道a,b谁更大
所以 max(a,b)就是最少的次数
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main(void)
{
int n,l,r; cin>>n;
int ans1=0,ans2=0;
int sum=0;
int a[55];
for(int i=0;i<n;i++) cin>>a[i],sum+=a[i];
cin>>l>>r;
for(int i=0;i<n;i++)
{
if(a[i]>r) ans2+=a[i]-r;
if(a[i]<l) ans1+=l-a[i];
}
if(sum<l*n) cout<<"-1";//人太少
else if(sum>r*n) cout<<"-1";//人太多
else cout<<max(ans1,ans2)<<endl;
return 0;
}
以上是关于P1109 学生分组 贪心的主要内容,如果未能解决你的问题,请参考以下文章