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