QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#591275#7733. Cool, It’s Yesterday Four Times Morebruteforce_RE 0ms0kbC++201.8kb2024-09-26 15:06:162024-09-26 15:06:17

Judging History

你现在查看的是最新测评结果

  • [2024-09-26 15:06:17]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:0kb
  • [2024-09-26 15:06:16]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
vector<vector<bool>> mp;
vector<vector<int>> dp;
int n,m;
void solve()
{
	dp.assign((n+3)*(m+3)+1,vector<int>((n+3)*(m+3)+1,0));
	vector vis((n+3)*(m+3)+1,vector<bool>((n+3)*(m+3)+1));
	queue<array<int,4>> q;
	for(int ax=1; ax<=n; ax++)
	{
		for(int ay=1; ay<=m; ay++)
		{
			if(!mp[ax][ay]) continue;
			for(int bx=0; bx<=n+1; bx++)
			{
				for(int by=0; by<=m+1; by++)
				{
					if(mp[bx][by]) continue;
					q.push({ax,ay,bx,by});
					dp[ax*(m+1)+ay][bx*(m+1)+by]=1;
					vis[ax*(m+1)+ay][bx*(m+1)+by]=1;
				}
			}
		}
		
	}
	
	while(!q.empty())
	{
		auto [x,y,bx,by]=q.front(); q.pop();
		vis[x*(m+1)+y][bx*(m+1)+by]=1;
		for(int i=0; i<=3; i++)
		{
			int nx=x+dx[i],ny=y+dy[i],nbx=bx+dx[i],nby=by+dy[i];
			if(mp[nx][ny]==0) continue;
			dp[nx*(m+1)+ny][nbx*(m+1)+nby]|=(dp[x*(m+1)+y][bx*(m+1)+by]);
			if(vis[nx*(m+1)+ny][nbx*(m+1)+nby]==0)
			{
				vis[nx*(m+1)+ny][nbx*(m+1)+nby]=1;
				q.push({nx,ny,nbx,nby});
			}
		}
	}
}
void O_o()
{
	cin>>n>>m;
	mp.assign(n+2,vector<bool>(m+2,0));
	vector<array<int,2>> a;
	for(int i=1; i<=n; i++)
	{
		string s;
		cin>>s;
		for(int j=0; j<m; j++)
		{
			if(s[j]=='.')
			{
				mp[i][j+1]=1;
				a.push_back({i,j+1});
			}
				
		}
	}
	solve();
	int ans=0;
	for(int i=0; i<a.size(); i++)
	{
		bool bz=1;
		for(auto j=0; j<a.size(); j++)
		{
			if(i==j) continue;
			auto [ax,ay]=a[i];
			auto [bx,by]=a[j];
			if(dp[ax*(m+1)+ay][bx*(m+1)+by]==0)
			{
				bz=0;
				break;
			}
		}
		ans+=bz;
	}
	cout<<ans<<"\n";
}
signed main()
{
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	cout<<fixed<<setprecision(12);
	int T=1;
	cin>>T;
	while(T--)
	{
		O_o();
	}
}

詳細信息

Test #1:

score: 0
Runtime Error

input:

4
2 5
.OO..
O..O.
1 3
O.O
1 3
.O.
2 3
OOO
OOO

output:


result: