#2为啥WA了
查看原帖
#2为啥WA了
1329138
luogu_hezhenmin1楼主2025/1/13 18:37
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+10;
int n,k,a[N],mxd=-1;
ll cnt=0;
int dfs(int x,int j,int d,int la){
	if(j<0) return 0;
	if(x==n+1){
		cnt++;
		return 1;
	}
	int nw=la+d;
	if(nw<a[x]) return a[x]-nw+1;
	else return dfs(x+1,j-nw+a[x],d,nw);
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>n>>k;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	if(n==1){
		cout<<k+1;
		return 0;
	}
    mxd=a[2]-a[1]+k;
    int mn=a[2]-a[1];
    if(a[2]<a[1]) mn=0;
    for(int i=mn;i<=mxd;i++){
        if(dfs(2,k,i,a[1])==0) break;
        for(int j=a[1]+1;j<=a[1]+k;j++){
        	int dj=dfs(2,k-j+a[1],i,j);
            if(dj==0) break;
            else if(dj!=1) j+=dj,j-=2;
		}
	}
	cout<<cnt;
	return 0;
}

不要给正解,只求hack

2025/1/13 18:37
加载中...