学生分组(洛谷P1109题题解,C++语言描述)
生活随笔
收集整理的這篇文章主要介紹了
学生分组(洛谷P1109题题解,C++语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
題目鏈接
分析
用貪心思想求解,不證。
首先,如果總人數小于N×LN\times{L}N×L或大于N×RN\times{R}N×R肯定沒結果,應該特判輸出?1-1?1。
我們要做的是,分別求出人數不足LLL的組的人數與LLL的差的絕對值、人數超過RRR的組的人數與RRR的差的絕對值。
隨后,二者取最大值即為所求!
AC代碼
#include <iostream> #include <cmath>using namespace std;int nums[50];int main() {int n, l, r, sum = 0, less = 0, more = 0;cin >> n;for (int i = 0; i < n; i++) {cin >> nums[i];sum += nums[i];}cin >> l >> r;if (sum > n*r || sum < n*l) {cout << -1;return 0;}for (int i = 0; i < n; i++) {if (nums[i] < l) {less += (l-nums[i]);} else if (nums[i] > r) {more += (nums[i]-r);}}cout << max(more, less);return 0; }總結
以上是生活随笔為你收集整理的学生分组(洛谷P1109题题解,C++语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于前台调用后台事件__doPostBa
- 下一篇: 查找(洛谷P2249题题解,C++语言描