0
已解决
谢祎恒
中级守护
中级守护
#include<iostream>
using namespace std;
int M,N,x[100100],sum;
int main()
{
int i;
cin>>M>>N;
for(i=0;i<M;i++)
{
cin>>x[i];
sum+=x[i];
}
cout<<sum/N;
return 0;
}
炸了,0分
求解
谢祎恒在2018-04-02 22:41:19追加了内容
0
已采纳
贾文卓
高级光能
高级光能
@谢祎恒 就是说,你如果不拼接木棍的话,可能会剩下一些余料用不了,但是你一拼接(就是说累加总长度)的话就有可能利用原来的余料切成了更多的小木块。
至于二分,大体代码如下:
int l=1,r=木棍总长度;
while(l<=r)
{
int mid=(l+r)/2;//二分答案。
if(c(mid)>=k)//如果能切割成的木块数量大于等于要求数量
l=mid+1;//提高要求。
else r=mid-1;//降低要求。
}
解释:
1.c(mid)是一个函数,返回值为以mid为标准长度所能切割的最多木块数量。
2.最后的答案是r(很好理解,从循环里出来之后,l>r,如果答案是一个浮点型,这时候长度少一些肯定可以,但是多一些就达不到目标了)。
0
0
贾文卓
高级光能
高级光能
你这样肯定是错的。
首先,木棍是不能拼接的。
比如说:
3 3
1 2 3
照你那样,答案是(1+2+3)/3=2,但是实际上是1。
还有,这道题目数据太大了,暴力枚举是肯定不行的,要用二分。
0