QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#591275 | #7733. Cool, It’s Yesterday Four Times More | bruteforce_ | RE | 0ms | 0kb | C++20 | 1.8kb | 2024-09-26 15:06:16 | 2024-09-26 15:06:17 |
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