建议算法初学者都看一下吧P1109学生分组

由于本newbie有一篇文章被社区收录了,虽然本——水平比较差,但是这对于本——来说是一种莫大的鼓舞,同时本——也反思了自己,写文章还是要严谨一点并且用词要规范得体,所以以后除了私密的文章,其他的文章本——都会尽可能严肃的来完成每一篇文章。此外,本——写橙题写了一段时间了,现在打算进阶黄题,并且本——最近有点忙,可能更新的速度会慢很多,当然意思是刷题数量会下来,但是本——舍不得那三备,所以本——还是会尽可能多刷题的。(无人在意啊本——

ok,回归正轨。把这篇文章发出来的原因是因为,刷了一道题,比较基础,但是往往这种题会导致像我这种人往复杂的方向去想,这道题如何去说呢,很巧妙,一会我把题目放下面,然后再放题解和我自己的理解

这个就是题目了,然后

题解

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a[55],L,R;
int b,c;
int all;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        all+=a[i];
    }
    cin>>L>>R;
    if(all>n*R||all<n*L)
    {
        cout<<"-1";
        return 0;
    }
    for(int i=1;i<=n;i++)
    {
        if(a[i]<L) b+=L-a[i];
        if(a[i]>R) c+=a[i]-R;
    }
    cout<<max(b,c);
    return 0;
}

你会发现,很简单,简单到自己都想笑。

首先我看到这个题,往模拟这方向去想了,但是由于我对于模拟掌握不是很好,写到这个题就感觉很头疼,但是仔细看这个题解,你会发现它就两个输出,他先把一种输出的情况完全分离出来了,剩下一种就非常容易处理了。感觉这既是思维的误区,也是大家思维习惯的体现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值