UOJ Logo Universal Online Judge

UOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#616398#425. 【集训队作业2018】stringsCry_For_theMoon10012792ms134692kbC++ 141.8kb2023-04-08 13:58:252023-04-08 13:58:27

测评历史

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

  • [2023-04-08 13:58:27]
  • 评测
  • 测评结果:100
  • 用时:12792ms
  • 内存:134692kb
  • [2023-04-08 13:58:25]
  • 提交

answer

#pragma GCC optimize(2)

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define op(x) ((x&1)?x+1:x-1)
#define odd(x) (x&1)
#define even(x) (!odd(x))
#define lc(x) (x<<1)
#define rc(x) (lc(x)|1)
#define lowbit(x) (x&-x)
#define mp(x,y) make_pair(x,y)
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
using namespace std;
const int MAXN=35,MAXM=105,B=12,MAXB=9;
int n,q;
char s[MAXM][MAXN];

int check(char s,char t){
	if(s=='?' || t=='?')return 1;
	return s==t;
}
bitset< (1<<15) > p[MAXB][1<<B],tmp[B],now;

int lb[1<<15],ans;
int tag[MAXM];

int main(){
	rep(i,0,14)lb[1<<i]=i;

	cin>>n>>q;
	rep(i,1,q)cin>>(s[i]+1);
	if(n==1){
		int f[2]={0,0};

		rep(i,1,q){
			f[0] |= check(s[i][1],'0');
			f[1] |= check(s[i][1],'1');
		}

		cout<<f[0]+f[1]<<endl;
		exit(0);
	}
	int m=n/2;
	//(0,m] and (m,n]
	for(int l=1,idx=0;l<=q;){
		int r=min(q,l+B-1);
		//[l,r]
		int len=r-l+1;

		rep(i,0,len-1)tmp[i].reset();

		rep(i,l,r){
			rep(j,0,(1<<(n-m))-1){
				int flag=1;
				rep(k,0,n-m-1){
					if(j>>k&1)flag &= check(s[i][m+k+1],'1');
					else flag &= check(s[i][m+k+1],'0');
				}
				if(flag)tmp[i-l][j]=1;
			}
		}

		rep(S,1,(1<<len)-1){
			p[idx][S] = p[idx][S^lowbit(S)] | tmp[lb[lowbit(S)]];
		}
		
		//
		l=r+1;idx++;
	}

	//
	
	rep(i,0,(1<<m)-1){

		rep(j,1,q){
			tag[j] = 1;
			rep(k,1,m){
				if(i>>(k-1)&1)tag[j] &= check(s[j][k],'1');
				else tag[j] &= check(s[j][k],'0');
			}
		}
		now.reset();

		for(int l=1,idx=0;l<=q;){
			int r=min(q,l+B-1);

			int len=r-l+1;
			int mask=0;
			rep(j,0,len-1)if(tag[l+j])mask |= (1<<j);

			now |= p[idx][mask];

			l=r+1,idx++;
		}

		ans += now.count();
	}
	

	cout<<ans;
    return 0;
}

这程序好像有点Bug,我给组数据试试?

详细

小提示:点击横条可展开更详细的信息

Subtask #1:

score: 3
Accepted
total time: 39ms
memory: 20956kb

Test #1:

score: 3
Accepted
time: 3ms
memory: 20764kb

input:

20 20
000?01?00110000?001?
0000??10011000010011
0000011001100?010011
00000?1?011000010011
000?011001...

output:

109

result:

ok 1 number(s): "109"

Test #2:

score: 0
Accepted
time: 13ms
memory: 20756kb

input:

20 20
010101?01001?1000?11
10?11001?01100101111
0?0010?100010?110?01
010101?1111011010110
011110?100...

output:

184

result:

ok 1 number(s): "184"

Test #3:

score: 0
Accepted
time: 7ms
memory: 20896kb

input:

20 20
????????????????????
????????????????????
????????????????????
????????????????????
??????????...

output:

1048576

result:

ok 1 number(s): "1048576"

Test #4:

score: 0
Accepted
time: 8ms
memory: 20956kb

input:

20 20
????????????????1???
???0????????????????
?????0????0??????1??
???????????0????????
??????????...

output:

1048320

result:

ok 1 number(s): "1048320"

Test #5:

score: 0
Accepted
time: 8ms
memory: 20896kb

input:

20 20
?????????????0??????
?????????????????0??
1???????????????????
????0???????????????
????????0?...

output:

1047552

result:

ok 1 number(s): "1047552"

Subtask #2:

score: 12
Accepted
total time: 706ms
memory: 20892kb

Test #6:

score: 12
Accepted
time: 143ms
memory: 20828kb

input:

30 20
110000110010100000001001000101
11000011?0?010?00000?00?000101
110?00110010100000?01?01?00101
1...

output:

327

result:

ok 1 number(s): "327"

Test #7:

score: 0
Accepted
time: 151ms
memory: 20892kb

input:

30 20
11001?000011?111110??111101?10
101000111?1010?0101011110?0011
001?1?1001?1110??1?0101110??10
0...

output:

646

result:

ok 1 number(s): "646"

Test #8:

score: 0
Accepted
time: 135ms
memory: 20756kb

input:

30 20
??????????????????????????????
??????????????????????????????
??????????????????????????????
?...

output:

1073741824

result:

ok 1 number(s): "1073741824"

Test #9:

score: 0
Accepted
time: 144ms
memory: 20772kb

input:

30 20
????????????????1???????0?????
???????????????????1??????????
??0???????????????????????????
?...

output:

1073225728

result:

ok 1 number(s): "1073225728"

Test #10:

score: 0
Accepted
time: 133ms
memory: 20804kb

input:

30 20
???????????????0??????????????
????????1?????????????????????
????????????????????????0?????
?...

output:

1073676288

result:

ok 1 number(s): "1073676288"

Subtask #3:

score: 11
Accepted
total time: 184ms
memory: 36572kb

Test #11:

score: 11
Accepted
time: 39ms
memory: 36572kb

input:

25 30
?10000010010?11111?110110
0100?0010?101?1?11?110110
010000?100101111111110110
01000001001?1111...

output:

413

result:

ok 1 number(s): "413"

Test #12:

score: 0
Accepted
time: 33ms
memory: 36384kb

input:

25 30
00000110?110011011011?010
00111??111111101001010?00
0101?01100100110000111100
01110?00111?10?1...

output:

316

result:

ok 1 number(s): "316"

Test #13:

score: 0
Accepted
time: 33ms
memory: 36356kb

input:

25 30
?????????????????????????
?????????????????????????
?????????????????????????
????????????????...

output:

33554432

result:

ok 1 number(s): "33554432"

Test #14:

score: 0
Accepted
time: 36ms
memory: 36480kb

input:

25 30
????????????10???????????
??????????????????1??????
????????????????1????????
????????????????...

output:

33554048

result:

ok 1 number(s): "33554048"

Test #15:

score: 0
Accepted
time: 43ms
memory: 36448kb

input:

25 30
????1????????????????????
???????1?????????????????
???????1?????????????????
????????????????...

output:

33554176

result:

ok 1 number(s): "33554176"

Subtask #4:

score: 6
Accepted
total time: 908ms
memory: 36568kb

Test #16:

score: 6
Accepted
time: 201ms
memory: 36428kb

input:

30 30
00001?110?0001?001011110101001
000??0??01?00110?10?111010100?
00001011010??11001011110101001
0...

output:

844

result:

ok 1 number(s): "844"

Test #17:

score: 0
Accepted
time: 192ms
memory: 36512kb

input:

30 30
0?0??0100?1000010011?101001011
0101??0?0110001010000011110111
101110001100010?0011010101100?
0...

output:

711

result:

ok 1 number(s): "711"

Test #18:

score: 0
Accepted
time: 162ms
memory: 36484kb

input:

30 30
??????????????????????????????
??????????????????????????????
??????????????????????????????
?...

output:

1073741824

result:

ok 1 number(s): "1073741824"

Test #19:

score: 0
Accepted
time: 180ms
memory: 36424kb

input:

30 30
0???????1?????????????????????
??????????01??????????????????
?????????????????????0????????
?...

output:

1073735680

result:

ok 1 number(s): "1073735680"

Test #20:

score: 0
Accepted
time: 173ms
memory: 36568kb

input:

30 30
????????0?????????????????????
??????????0???????????????????
?????0????????????????????????
?...

output:

1073725440

result:

ok 1 number(s): "1073725440"

Subtask #5:

score: 11
Accepted
total time: 1412ms
memory: 134684kb

Test #21:

score: 11
Accepted
time: 442ms
memory: 134536kb

input:

30 100
101100110101000110?10101100111
101100110101000110110101100111
101100110101000110110101100111
...

output:

32

result:

ok 1 number(s): "32"

Test #22:

score: 0
Accepted
time: 65ms
memory: 3388kb

input:

30 1
??????????????????????????????

output:

1073741824

result:

ok 1 number(s): "1073741824"

Test #23:

score: 0
Accepted
time: 72ms
memory: 3464kb

input:

30 2
?11??0?0????1?00???001???01???
11??????????1??0????0?0????10?

output:

4440064

result:

ok 1 number(s): "4440064"

Test #24:

score: 0
Accepted
time: 414ms
memory: 134684kb

input:

30 100
????????????1????????0????????
??????????1??10100101000110111
001100100110110100101000110111
...

output:

268437504

result:

ok 1 number(s): "268437504"

Test #25:

score: 0
Accepted
time: 419ms
memory: 134496kb

input:

30 100
110010101101011111000110001011
110010101101011111000110001011
110010101101011111000110001011
...

output:

33583104

result:

ok 1 number(s): "33583104"

Subtask #6:

score: 16
Accepted
total time: 1351ms
memory: 69104kb

Test #26:

score: 16
Accepted
time: 302ms
memory: 69104kb

input:

30 50
01000111101100??01?111?0100110
0100?1111?1?00010?11110010?110
?100011110110001?1111100100110
?...

output:

1110

result:

ok 1 number(s): "1110"

Test #27:

score: 0
Accepted
time: 284ms
memory: 69036kb

input:

30 50
101?10?1010?1101001?111?0?1101
1001110110101000101?0100111?11
1010110110010?11?1011101110000
1...

output:

1201

result:

ok 1 number(s): "1201"

Test #28:

score: 0
Accepted
time: 238ms
memory: 68976kb

input:

30 50
??????????????????????????????
??????????????????????????????
??????????????????????????????
?...

output:

1073741824

result:

ok 1 number(s): "1073741824"

Test #29:

score: 0
Accepted
time: 260ms
memory: 69036kb

input:

30 50
???????????1??????????????????
????????????????1?????????????
???????????????0??????????????
0...

output:

1073741728

result:

ok 1 number(s): "1073741728"

Test #30:

score: 0
Accepted
time: 267ms
memory: 68884kb

input:

30 50
??????0???????????????????????
??????????????????????1???????
?????????0????????????????????
?...

output:

1073741792

result:

ok 1 number(s): "1073741792"

Subtask #7:

score: 41
Accepted
total time: 8192ms
memory: 134692kb

Test #31:

score: 41
Accepted
time: 504ms
memory: 134500kb

input:

30 100
0001100101?0101010?101100101?1
000??0010100101010010110?101?1
000?10010100?01010010?100101?1
...

output:

2027

result:

ok 1 number(s): "2027"

Test #32:

score: 0
Accepted
time: 512ms
memory: 134472kb

input:

30 100
?11?1??1100?000010100010110000
001?0100011101?01?100001?10000
?0000?0110101000010010?1111?00
...

output:

2634

result:

ok 1 number(s): "2634"

Test #33:

score: 0
Accepted
time: 414ms
memory: 134692kb

input:

30 100
??????????????????????????????
??????????????????????????????
??????????????????????????????
...

output:

1073741824

result:

ok 1 number(s): "1073741824"

Test #34:

score: 0
Accepted
time: 474ms
memory: 134616kb

input:

30 100
0?????????????????????????????
????????????????????????????1?
?????????0?????????1??????????
...

output:

1073741820

result:

ok 1 number(s): "1073741820"

Test #35:

score: 0
Accepted
time: 456ms
memory: 134600kb

input:

30 100
???????????????????????????0??
????????0?????????????????????
????????1?????????????????1???
...

output:

1073741823

result:

ok 1 number(s): "1073741823"

Test #36:

score: 0
Accepted
time: 419ms
memory: 134496kb

input:

30 100
?????????????????0111101111000
?????????????????1100110001111
?????????????????1110010011000
...

output:

12976128

result:

ok 1 number(s): "12976128"

Test #37:

score: 0
Accepted
time: 453ms
memory: 134472kb

input:

30 100
00????????????????????????????
??00??????????????????????????
????00????????????????????????
...

output:

1059392917

result:

ok 1 number(s): "1059392917"

Test #38:

score: 0
Accepted
time: 439ms
memory: 134616kb

input:

30 100
00???????????????????????????0
???00????????????????????????0
??????00?????????????????????0
...

output:

506637824

result:

ok 1 number(s): "506637824"

Test #39:

score: 0
Accepted
time: 461ms
memory: 134596kb

input:

30 100
010???????????????????????????
???000????????????????????????
??????100?????????????????????
...

output:

1073741824

result:

ok 1 number(s): "1073741824"

Test #40:

score: 0
Accepted
time: 464ms
memory: 134624kb

input:

30 100
0000??????????????????????????
????0000??????????????????????
????????0000??????????????????
...

output:

593122330

result:

ok 1 number(s): "593122330"

Test #41:

score: 0
Accepted
time: 446ms
memory: 134620kb

input:

30 100
01100?????????????????????????
?????11110????????????????????
??????????11011???????????????
...

output:

1029787984

result:

ok 1 number(s): "1029787984"

Test #42:

score: 0
Accepted
time: 436ms
memory: 134560kb

input:

30 100
000110????????????????????????
??????100001??????????????????
????????????110000????????????
...

output:

877009024

result:

ok 1 number(s): "877009024"

Test #43:

score: 0
Accepted
time: 483ms
memory: 134680kb

input:

30 100
1100100???????????????????????
???????1001110????????????????
??????????????1011011?????????
...

output:

594414720

result:

ok 1 number(s): "594414720"

Test #44:

score: 0
Accepted
time: 443ms
memory: 134688kb

input:

30 100
10001100??????????????????????
????????01100001??????????????
????????????????00111110??????
...

output:

343061245

result:

ok 1 number(s): "343061245"

Test #45:

score: 0
Accepted
time: 411ms
memory: 134496kb

input:

30 100
1010110110????????????????????
??????????0100010000??????????
????????????????????1110100010
...

output:

100500544

result:

ok 1 number(s): "100500544"

Test #46:

score: 0
Accepted
time: 452ms
memory: 134528kb

input:

30 100
????????????????????????????11
????????????????????????????00
????????????????????????????10
...

output:

1073741824

result:

ok 1 number(s): "1073741824"

Test #47:

score: 0
Accepted
time: 471ms
memory: 134492kb

input:

30 100
???????????????????????????110
???????????????????????????110
???????????????????????????001
...

output:

536870912

result:

ok 1 number(s): "536870912"

Test #48:

score: 0
Accepted
time: 454ms
memory: 134496kb

input:

30 100
0??????????????????????????11?
1??????????????????????????11?
0??????????????????????????00?
...

output:

536870912

result:

ok 1 number(s): "536870912"

Extra Test:

score: 0
Extra Test Passed