MLE求助
查看原帖
MLE求助
1056725
zhang_yang_alan楼主2024/7/10 15:40

#include<bits/stdc++.h>

using namespace std;

#define int long long

int n,a[20010][3],ans;

int dx[2]={0,0};

int dy[2]={-1,1};

int vis[20010][20010];

bool check(){
	
	for(int i=1;i<=n;i++){
		
		for(int j=a[i][1];j<=a[i][2];j++){
			
			if (vis[i][j]==0) return false;
			
		}
		
	}
	
	return true;
	
}

bool checki(int i){
	
	for(int j=a[i][1];j<=a[i][2];j++){
		
		if (vis[i][j]==0) return false;
		
	}
	
	return true;
	
}
void dfs(int x,int y,int step){
	
	if (check()==1){
		
		if(x==n&&y==n){
			
			if (step<ans) ans=step;
			
			return ;
			
		}
		
		dfs(x+1,y,step+1);
		
	}
	
	if (checki(y)==1){
		
		dfs(x,y+1,step+1);
		
	}
	
	for(int i=0;i<2;i++){
		
		int newx=x+dx[i],newy=y+dy[i];
		
		if (newx>=1&&newx<=n&&newy>=1&&newy<=n) dfs(newx,newy,step+1);
		
	}
	
}

signed main(){
	
	cin >> n;
	
	for(int i=1;i<=n;i++){
		
		cin >> a[i][1]>> a[i][2];
		
	}
	
	dfs(1,1,0);
	
	cout << ans;
	
	return 0;
	
}
 
2024/7/10 15:40
加载中...