QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#739066#7900. Gifts from KnowledgeHHSWA 52ms76004kbC++141.5kb2024-11-12 20:45:312024-11-12 20:46:02

Judging History

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

  • [2024-11-12 20:46:02]
  • 评测
  • 测评结果:WA
  • 用时:52ms
  • 内存:76004kb
  • [2024-11-12 20:45:31]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t,n,m;
vector<ll>shu[1000080];
vector<ll>c[2000090];
ll vis[2000090];
const ll mod=1e9+7;

void bfs(ll u)
{
	vis[u]=1;
	for(auto v:c[u])
	{
		if(vis[v])continue;
		bfs(v);
	}
}

void solve()
{
	cin>>n>>m;
	for(ll i=1;i<=2*n+10;i++)
	{
		vis[i]=0;
		c[i].clear();
	}
	for(ll i=1;i<=m;i++)
	{
		shu[i].clear();
	}
	
	for(ll i=1;i<=n;i++)
	{
		c[i].push_back(i+n);
		c[i+n].push_back(i);
		for(ll j=1;j<=m;j++)
		{
			char a;
			cin>>a;
			if(a=='1')
			{
				shu[j].push_back(i);
			}
		}
	}
	
	if(m%2==1&&shu[m/2+1].size()>1){cout<<0<<endl;return;}
	for(ll i=1;i<=m/2;i++)
	{
		if(shu[i].size()+shu[m-i+1].size()>2){cout<<0<<endl;return ;}
		else if(shu[i].size()+shu[m-i+1].size()<2)continue;
		else{
			if(shu[i].size()==1)
			{
				ll u=shu[i][0];
				ll v=shu[m-i+1][0];
				if(u==v)continue;
				c[u].push_back(v);
				c[u+n].push_back(v+n);
				c[v].push_back(u);
				c[v+n].push_back(u+n);
			}
			else
			{
				ll u,v;
				if(shu[i].size())
				{
					u=shu[i][0];
					v=shu[i][1];
				}
				else 
				{
					u=shu[m-i+1][0];
					v=shu[m-i+1][1];
				}
				c[u].push_back(v+n);
				c[v].push_back(u+n);
				c[u+n].push_back(v);
				c[v+n].push_back(u);
			}
		}
	}
	ll ans=1;
	for(ll i=1;i<=2*n;i++)
	{
		if(!vis[i])
		{
			bfs(i);
			ans*=2;
			ans%=mod;
		}
	}
	cout<<ans<<endl;
	
}
int main()
{
	cin>>t;
	while(t--)
	{
		solve();
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 12ms
memory: 76004kb

input:

3
3 5
01100
10001
00010
2 1
1
1
2 3
001
001

output:

4
0
2

result:

ok 3 number(s): "4 0 2"

Test #2:

score: 0
Accepted
time: 41ms
memory: 75948kb

input:

15613
10 10
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
15 8
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
1 5
00000
5 9
000000000
000000000
0000...

output:

1024
32768
2
32
32768
128
32
16
16
2
16384
16384
128
128
32768
8192
128
64
16384
2
4
2
4096
16
4096
1024
32768
32768
16384
8
128
2
16
4096
8192
32768
8192
8192
16
16384
16384
256
128
8
256
8
4096
512
2
4
32
32
2
64
512
1024
32768
32768
2
64
16384
16
8192
16
256
16
64
8192
8192
64
1024
2
32768
2
4
51...

result:

ok 15613 numbers

Test #3:

score: -100
Wrong Answer
time: 52ms
memory: 74668kb

input:

15759
9 6
000000
000000
000000
000000
000000
000000
000000
000000
000000
5 15
010000000000000
000000000000000
000000000000000
000100000000000
000100000000000
14 12
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000...

output:

512
16
16384
512
1024
4096
32768
4
2
512
512
512
512
8
2
256
16
4096
512
64
16
4096
512
32
32768
8192
32
2048
128
16
4096
64
32768
256
32
16384
8
512
32
2048
8
16
1024
2048
128
64
32
8
512
8
8192
256
8192
32768
2
8
512
512
256
32
2
2048
8192
8
64
8
2
16384
32768
32768
1024
4096
16384
16384
128
256
4...

result:

wrong answer 2380th numbers differ - expected: '0', found: '4'