| ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
|---|---|---|---|---|---|---|---|---|---|
| #616398 | #425. 【集训队作业2018】strings | Cry_For_theMoon | 100 | 12792ms | 134692kb | C++ 14 | 1.8kb | 2023-04-08 13:58:25 | 2023-04-08 13:58:27 |
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

鄂公网安备 42010202000505 号