5,9,10点wa求助
查看原帖
5,9,10点wa求助
1147266
ssssiriussss楼主2024/6/29 23:26

用的是递归,思路一般,能跑,但奇怪的就是其他全都ac就只有第5、9、10点wa

#include<iostream>
#include<cstring>
using namespace std;
int d[100010];
int check(int l,int r){
    int min=10000;
	for(int i=l;i<=r;i++){
        if(d[i]==0)return 0;
        if(min>d[i])min=d[i];
	}
	return min;
}
int pu(int l,int r){
	if(l==r){
        int end=d[l];
        d[l]=0;
        return end;
	}else{
		int cnt=0;
		int checkResult=check(l,r);
        if(checkResult)for(int i=l;i<=r;i++)d[i]-=checkResult;
        cnt+=checkResult;
        int L=l,R;
        while(d[L]==0)L++;
        while(1){
            R=L;
            while(d[R+1]!=0 && R<r)R++;
            cnt+=pu(L,R);
            L=R+2;
            while(d[L]==0)L++;
            if(L>r)break;
        }
        return cnt;
	}
}
int main(){
    memset(d,-1,sizeof(d));
    int n;
    cin>>n;
    for(int i=0;i<n;i++)cin >> d[i];
    cout<<pu(0,n-1);
}
2024/6/29 23:26
加载中...