zoukankan      html  css  js  c++  java
  • 【洛谷 1109】学生分组

    题目描述

    有N组学生,给出初始时每组中的学生个数,再给出每组学生人数的上界RR和下界L(L le R)L(LR),每次你可以在某组中选出一个学生把他安排到另外一组中,问最少要多少次才可以使NN组学生的人数都在[L,R][L,R]中。

    输入格式

    第一行一个整数NN,表示学生组数; n le 50n50

    第二行NN个整数,表示每组的学生个数;

    第三行两个整数L,RL,R,表示下界和上界。

    输出格式

    一个数,表示最少的交换次数,如果不能满足题目条件输出-11

    输入输出样例

    输入 #1
    2
    10 20
    10 15
    
    输出 #1
    5

    题解:沙雕题目欢乐多,还是水题开心%%%练练手啦

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int n,a[55],sum,l,r;
    int work(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        { scanf("%d",&a[i]); sum+=a[i];} 
        scanf("%d %d",&l,&r);
        int l1=l*n , r1=r*n;
        if(sum<l1 || sum>r1) return -1;
        int s=0,d=0;
        for(int i=1;i<=n;i++){
            if(a[i]<l) s+=(l-a[i]);
            if(a[i]>r) d+=(a[i]-r);
        }
        return max(s,d);
    }
    int main(){
    //    freopen("1109.in","r",stdin);
    //    freopen("1109.out","w",stdout);
        cout<<work();
        return 0;
    }
  • 相关阅读:
    UVA 10131题解
    算法常见概念
    图算法概论
    POJ 1654 area 解题
    大数阶乘的位数和精确值计算
    printf()与 scanf()
    想编程之美竞赛
    所感所想
    Git 入门和常用命令详解
    使用crypto模块实现md5加密功能(解决中文加密前后端不一致的问题)
  • 原文地址:https://www.cnblogs.com/wuhu-JJJ/p/11774467.html
Copyright © 2011-2022 走看看