全TLE求助,报酬一关
查看原帖
全TLE求助,报酬一关
577683
Neil_Seniorious楼主2023/3/22 20:44
#include<bits/stdc++.h>
using namespace std;

inline int read(){
	short f=1;int x=0;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
	return x*f;
}
inline void readch(char *str){
	int lenn=0;
	char c=getchar();
	while(c==' '||c=='\n'||c=='\r'){
		c=getchar();
	}
	while(c>='A'&&c<='Z'||c>='a'&&c<='z'||c>='0'&&c<='9'){
		str[lenn++]=c;
		c=getchar();
		if(c==' '||c=='\n'||c=='\r') break;
	}
}
int max(int a,int b){return a>b?a:b;}
int min(int a,int b){return a<b?a:b;}
int swap(int &a,int &b){int c=a;a=b;b=c;}

int n,m;
int a[1030][1030];
int p[1030][1030];

int main(){
	n=read(),m=read();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			char c=getchar();
			switch(c){
				case 'u':
					a[i][j]=1;
					break;
				case 'l':
					a[i][j]=2;
					break;
				case 'd':
					a[i][j]=3;
					break;
				case 'r':
					a[i][j]=4;
					break;
			}
		}
		getchar();
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			int x=i,y=j;
			while(x>0&&x<=n&&y>0&&y<=m){
				if(a[x][y]==0||p[x][y]==1){p[i][j]=1;break;}
				if(p[x][y]==-1){p[i][j]=-1;break;}
				if(a[x][y]==1) x--;
				if(a[x][y]==2) y--;
				if(a[x][y]==3) x++;
				if(a[x][y]==4) y++;
			}
			if(p[x][y]==0) p[x][y]=-1;
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(p[i][j]==1) ans++;
		}
	}
	return printf("%d",ans),0;
}
2023/3/22 20:44
加载中...