捞,20分求调
  • 板块学术版
  • 楼主Contain_Thunder
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/15 15:44
  • 上次更新2024/6/15 17:43:43
查看原帖
捞,20分求调
906916
Contain_Thunder楼主2024/6/15 15:44

P6430 [COCI2008-2009#1] SKAKAVAC

虽然正解不是暴力,但是暴力写wa了...求大佬帮我调调暴力

暴力代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int r,c;
int f[1500][1500];
int maxx=0;
inline void read(register int &a) {
	a = 0;
	char c;
	while ((c = getchar()) < 48);
	do a = (a << 3) + (a << 1) + (c ^ 48);
	while ((c = getchar()) > 47);
}
void iread(){
	read(n);
	read(r);read(c);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			read(f[i][j]);
		}
	}
}
void dfs(int x,int y,int dep){
//	cout<<x<<' '<<y<<endl;
	maxx=max(maxx,dep);
	for(int i=x+2;i<=n&&i>=1;i++){
		if(f[i][y+1]>f[x][y]){
			dfs(i,y+1,dep+1);
		}
		if(f[i][y-1]>f[x][y]){
			dfs(i,y-1,dep+1);
		}
	}
	for(int i=x-2;i<=n&&i>=1;i--){
		if(f[i][y+1]>f[x][y]){
			dfs(i,y+1,dep+1);
		}
		if(f[i][y-1]>f[x][y]){
			dfs(i,y-1,dep+1);
		}
	}
	for(int i=y+2;i<=n&&i>=1;i++){
		if(f[x+1][i]>f[x][y]){
			dfs(x+1,i,dep+1);
		}
		if(f[x-1][i]>f[x][y]){
			dfs(x-1,i,dep+1);
		}
	}
	for(int i=y-2;i<=n&&i>=1;i--){
		if(f[x+1][i]>f[x][y]){
			dfs(x+1,i,dep+1);
		}
		if(f[x-1][i]>f[x][y]){
			dfs(x-1,i,dep+1);
		}
	}
	return ;
}
signed main()
{
	iread();
	dfs(r,c,1);
//	cout<<check(4,4);
	cout<<maxx;
	return 0;
}
2024/6/15 15:44
加载中...