QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#672558 | #7733. Cool, It’s Yesterday Four Times More | wangxiaorui# | WA | 0ms | 9192kb | C++20 | 3.4kb | 2024-10-24 17:27:12 | 2024-10-24 17:27:12 |
Judging History
answer
#include<bits/stdc++.h>
#define pos(x,y) ((x-1)*m+y)
#define fail(x,y) (x<1||y<1||x>n||y>m||a[x][y]=='O')
using namespace std;
const int X[]={1,0,-1,0};
const int Y[]={0,1,0,-1};
char a[1005][1005],vis[1005][1005];
vector<pair<int,int>>v;
int n,m,f[1005][1005],ans;
// void dfs(int xa,int ya,int xb,int yb)
// {
// int p1=pos(xa,ya),p2=pos(xb,yb);
// // cerr<<xa<<' '<<ya<<' '<<xb<<' '<<yb<<':'<<p1<<' '<<p2<<' '<<f[p1][p2]<<endl;
// if(f[p1][p2]||vis[p1][p2]) return;
// vis[p1][p2]=1;
// v.push_back({p1,p2});
// for(int i=0;i<4;i++)
// {
// int px=xa+X[i],py=ya+Y[i],qx=xb+X[i],qy=yb+Y[i];
// int f1=fail(px,py),f2=fail(qx,qy);
// if(f1) continue;
// if(f2)
// {
// f[p1][p2]=1;
// continue;
// }
// // cerr<<px<<' '<<py<<' '<<qx<<' '<<qy<<endl;
// // if(!vis[pos(px,py)][pos(qx,qy)])
// dfs(px,py,qx,qy);
// f[p1][p2]|=f[pos(px,py)][pos(qx,qy)];
// }
// }
void bfs(int sxa,int sya,int sxb,int syb)
{
queue<pair<pair<int,int>,pair<int,int>>>q;
q.push({{sxa,sya},{sxb,syb}});
while(!q.empty())
{
int xa=q.front().first.first,ya=q.front().first.second;
int xb=q.front().second.first,yb=q.front().second.second;
q.pop();
for(int i=0;i<4;i++)
{
int xc=xa+X[i],yc=ya+Y[i],xd=xb+X[i],yd=yb+Y[i];
int px=pos(xc,yc),py=pos(xd,yd);
if(fail(xc,yc)||fail(xd,yd)||f[px][py]) continue;
f[px][py]=1;
q.push({{xc,yc},{xd,yd}});
}
}
}
void sol()
{
cin>>n>>m;
// n=1,m=1000;
memset(f,0,sizeof(f));
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
// a[i][j]='.';
}
}
ans=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]=='O') continue;
for(int k=0;k<=n+1;k++)
{
for(int l=0;l<=m+1;l++)
{
if(fail(k,l)) bfs(i,j,k,l);
}
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
int t=1;
for(int k=1;k<=n;k++)
{
for(int l=1;l<=m;l++)
{
if(fail(k,l)||i==k&&j==l) continue;
t&=f[pos(i,j)][pos(k,l)];
}
}
ans+=t;
}
}
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=m;j++)
// {
// int res=1;
// if(a[i][j]=='O') continue;
// v.clear();
// for(int k=1;k<=n;k++)
// {
// for(int l=1;l<=m;l++)
// {
// if(a[k][l]=='O'||i==k&&j==l) continue;
// dfs(i,j,k,l);
// res&=f[pos(i,j)][pos(k,l)];
// // cerr<<i<<','<<j<<' '<<k<<','<<l<<' '<<f[pos(i,j)][pos(k,l)]<<endl;
// }
// }
// for(auto k:v) vis[k.first][k.second]=0;
// ans+=res;
// }
// }
cout<<ans<<endl;
}
int main()
{
ios::sync_with_stdio(0);
int t;
cin>>t;
while(t--) sol();
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 9192kb
input:
4 2 5 .OO.. O..O. 1 3 O.O 1 3 .O. 2 3 OOO OOO
output:
3 1 0 6
result:
wrong answer 4th lines differ - expected: '0', found: '6'