本地可以跑,但洛谷编译不了,蒟蒻求助(゚Д゚
思路是每次一个连续段减少最少值
蒟蒻代码:
#include <iostream>
using namespace std;
int n,h[100005],ans=0,num=0,t=1,end,min_h;
void findmin()//找最小值
{
int tt=t;
for(;tt<=n;tt++)
{
if(h[tt]==0)break;
min_h=min(min_h,h[tt]);
end=tt;//连续段结束点
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>h[i];num+=h[i];
}
while(num>0)//还有积木
{
min_h=10005;//初赋
findmin();
if(min_h!=10005)//必须检测到连续段
{
num-=(end-t+1)*min_h;//用掉积木
for(;t<=end;t++)h[t]-=min_h;
ans++;
}
t++;
if(t>n)t=1;//t不能超过n
}
cout<<ans;
return 0;
}
蒟蒻求助