P1109 学生分组

https://www.luogu.com.cn/problem/P1109
涉及知识点:贪心,模拟

橙色题
思路:

一.
我们首先要找到有多少人多于上限需要调走(用a表示) 所有缺少人数的组需要多少人来补(用b表示) 那么,最优的办法当然是让a去补b 因为不知道a,b谁更大 所以 maxa,b)就是最少的次数 二.考虑输出-1的情况
如果n*r(所有教室一起能装下的最大人数)小于sum(总学生人数) 我们就输出-1 当然还有n*l(至少需要的学生人数)大于sum 我们就输出-1
三.输出max(a,b)

复制代码
#include <iostream> #include <algorithm> using namespace std; int s[110]; // 用来装每组学生的人数 int main() { int n,l,r,a=0,b=0,sum=0; cin>>n; for(int i=1;i<=n;i++) cin>>s[i],sum+=s[i]; // sum算出总人数 cin>>l>>r; for(int i=1;i<=n;i++) { if(s[i]>r) a+=s[i]-r; // 找到有多少人需要调走 if(s[i]<l) b+=l-s[i]; // 找到有多少人需要调来 } if(sum>n*r) cout<<"-1"; // 如果学生人数大于所以教室的极限 else cout<<max(a,b); // 否侧输出a,b的较大值 即最少的次数 return 0; }
复制代码

 

 

__EOF__

本文作者灰の魔女伊蕾娜
本文链接https://www.cnblogs.com/2elaina/p/16444125.html
关于博主:编程小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   -イレイナ  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示