QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#810317 | #7129. Independent set | jucason_xu | AC ✓ | 383ms | 13352kb | C++14 | 1.8kb | 2024-12-11 21:03:51 | 2024-12-11 21:03:51 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define rd(i,n) for(int i=0;i<n;i++)
#define rp(i,n) for(int i=1;i<=n;i++)
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=b;i>=a;i--)
#define pb push_back
#define vt vector
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll>pll;
const int N=5000005;
const int P=1000000007;
int n,m,a[N],f[31][11],g[31][11];
int tf[11],tg[11],C[31][31];
string s;
inline void upd(int &x,int y){
x+=y;
if(x>=P)x-=P;
}
inline int dfs(int x,int d){
if(x>n)return 0;
rep(i,0,m)f[d][i]=g[d][i]=0;
f[d][1]=(s[x-1]=='0'),g[d][0]=1;
//f是选了,g是没选
int lsz=dfs(x<<1,d+1),sz=(s[x-1]=='0');
if(lsz){
rep(a,0,min(m,sz+lsz))tf[a]=tg[a]=0;
rep(a,0,min(m,sz))rep(b,0,min(m-a,lsz)){
upd(tf[a+b],1ll*f[d][a]*g[d+1][b]%P);
upd(tg[a+b],1ll*g[d][a]*f[d+1][b]%P);
}
rep(a,0,min(m,sz+lsz)){
f[d][a]=tf[a],tf[a]=0;
g[d][a]=tg[a],tg[a]=0;
}
sz+=lsz;
}
// cout<<x<<"= ";
// rep(a,0,m)cout<<f[d][a]<<' ';
// cout<<endl;
int rsz=dfs(x<<1|1,d+1);
if(rsz){
rep(a,0,min(m,sz+rsz))tf[a]=tg[a]=0;
rep(a,0,min(m,sz))rep(b,0,min(m-a,rsz)){
upd(tf[a+b],1ll*f[d][a]*g[d+1][b]%P);
upd(tg[a+b],1ll*g[d][a]*f[d+1][b]%P);
}
rep(a,0,min(m,sz+rsz)){
f[d][a]=tf[a],tf[a]=0;
g[d][a]=tg[a],tg[a]=0;
}
sz+=rsz;
}
rep(a,0,min(m,sz)){
upd(f[d][a],g[d][a]);
}
// cout<<x<<": ";
// rep(a,0,m)cout<<f[d][a]<<' ';
// cout<<endl;
return sz;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m;
cin>>s;
dfs(1,0);
rep(i,0,2*m){
C[i][0]=1;
rep(j,1,i)C[i][j]=(C[i-1][j]+C[i-1][j-1])%P;
}
int ans=0;
rep(i,1,m){
ans=(ans+1ll*f[0][i]%P*C[m-1][i-1]%P)%P;
}
cout<<ans<<endl;
return 0;
}
//Rain Rain Rain
这程序好像有点Bug,我给组数据试试?
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3708kb
input:
2 2 00
output:
2
result:
ok 1 number(s): "2"
Test #2:
score: 0
Accepted
time: 1ms
memory: 5688kb
input:
10 3 0101010101
output:
26
result:
ok 1 number(s): "26"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
10 3 0000100000
output:
110
result:
ok 1 number(s): "110"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3700kb
input:
10 3 0001000000
output:
117
result:
ok 1 number(s): "117"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3660kb
input:
10 3 0010000001
output:
86
result:
ok 1 number(s): "86"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3596kb
input:
10 3 0100000000
output:
115
result:
ok 1 number(s): "115"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3660kb
input:
10 3 0010000000
output:
118
result:
ok 1 number(s): "118"
Test #8:
score: 0
Accepted
time: 0ms
memory: 3648kb
input:
10 3 1011001000
output:
45
result:
ok 1 number(s): "45"
Test #9:
score: 0
Accepted
time: 0ms
memory: 3652kb
input:
10 3 0000011001
output:
49
result:
ok 1 number(s): "49"
Test #10:
score: 0
Accepted
time: 0ms
memory: 3580kb
input:
10 3 0000010011
output:
48
result:
ok 1 number(s): "48"
Test #11:
score: 0
Accepted
time: 0ms
memory: 3656kb
input:
10 3 0100100101
output:
35
result:
ok 1 number(s): "35"
Test #12:
score: 0
Accepted
time: 0ms
memory: 3660kb
input:
10 3 0000000011
output:
72
result:
ok 1 number(s): "72"
Test #13:
score: 0
Accepted
time: 1ms
memory: 3668kb
input:
1000 10 0000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
876560614
result:
ok 1 number(s): "876560614"
Test #14:
score: 0
Accepted
time: 1ms
memory: 3592kb
input:
1000 10 0000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000010000000000000000000000000000000100000000000000010000000000000000000000001000000010000001000000000000000000000000000000000000000000000000000000000000...
output:
45119364
result:
ok 1 number(s): "45119364"
Test #15:
score: 0
Accepted
time: 1ms
memory: 3584kb
input:
1000 10 1100000010000000000010011100000000001000001101001010010000100100001000000000001010010100100000001001000000000000000010000010000001010000000000100000100000000000010100010000110000010010001000000000001000001000000000010001011010000000100100000000001010001110000010000000000000000000000000000000...
output:
460336587
result:
ok 1 number(s): "460336587"
Test #16:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
1000 10 0000000100000001000010001100000000000100000011000000000110100111000000100000000001000000000100100100010010011000010000010010001000100100000000000000100000100000010000000100000000000100001000000000000000000010000000001000010001000000010010000000000000000000100001000100000001000010100100011010...
output:
48086189
result:
ok 1 number(s): "48086189"
Test #17:
score: 0
Accepted
time: 0ms
memory: 3636kb
input:
1000 10 0010000000001000000001011000000000000000000000000000000000000001000010000001011000000000000000000000000000000010000010010000010000100001000001000000110000000000000100000000000000001001000000001000000001010000001001000000000000000000000000000000000010000000000010000001100001000000000100000110...
output:
512493587
result:
ok 1 number(s): "512493587"
Test #18:
score: 0
Accepted
time: 1ms
memory: 3656kb
input:
1000 10 0000000010000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000...
output:
412295689
result:
ok 1 number(s): "412295689"
Test #19:
score: 0
Accepted
time: 1ms
memory: 3584kb
input:
1000 10 0000100111000011101000000000010110000001100001100100000000000000001001000000010000100000010000010000000000100000000001000001000000010000000000110000100001000000001010010000000000110101100000100000101000110100001001000000101000000000000000010000001000100000000100001001010010010001000000000000...
output:
518455593
result:
ok 1 number(s): "518455593"
Test #20:
score: 0
Accepted
time: 0ms
memory: 3668kb
input:
1000 10 0000000100000000001000000000000000000000000000000001000000000000000010000000000010000000000000000000000000100100010000000110000000000000000000000000000010000000000000100000000100000000000000000000100010000000000100000000010010001000000000000000000000000000000000000000000000000000001000010000...
output:
430339412
result:
ok 1 number(s): "430339412"
Test #21:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
1000 10 0000110010000000000010101001010000100010010110000100001000100001000000000010000100000011100000000000010100001000000000000000100000100001100000001000000111100000100101001000000000000000001000001000100000000010000000001000001000000000001000000000000000001000100100001100100000011010001000000011...
output:
348316472
result:
ok 1 number(s): "348316472"
Test #22:
score: 0
Accepted
time: 0ms
memory: 3648kb
input:
1000 10 0000100000000010000000000000000000000000000000000001000010000010001010010000000000000000100100100100101101001001010000100000000000100000000000000100001010011100000001000000000010000000001000001001000001010001001000000010000000110000010000000000000000000101000001100000100000100000001010001000...
output:
213483490
result:
ok 1 number(s): "213483490"
Test #23:
score: 0
Accepted
time: 64ms
memory: 4172kb
input:
1000000 10 1000000000100011011000001001000100000111000100001001000000000000000000000010100000010000000000000001100110010100011010001000100100001101010010101100001100100110001100010001000000000000011000001000010100000100000110001101000000000100110000100000100001000010000001000010000100001000000011110...
output:
476845308
result:
ok 1 number(s): "476845308"
Test #24:
score: 0
Accepted
time: 77ms
memory: 4292kb
input:
1000000 10 0000000000000000000000000000000001000000100000000000000000000000000000000000000000000100000000010000000010000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000100001010000000000000000000000000000000000000000000000000100000010000100000010...
output:
774002748
result:
ok 1 number(s): "774002748"
Test #25:
score: 0
Accepted
time: 72ms
memory: 4272kb
input:
1000000 10 0000000000000000000001000000010000010010100110110001000100010000100000000111001000000000000001010000101000000000011000101000100000000000000000000000110010000000111001010000000000010000110000000100100000000001001001001001000010010001010000000000000000100001000000000000001100000100000000000...
output:
160255662
result:
ok 1 number(s): "160255662"
Test #26:
score: 0
Accepted
time: 76ms
memory: 4288kb
input:
1000000 10 0000000010000000000000100000000000000010000100001000000000000000000000100000100000000000000000000000000000100000000000000000011000000011000000001010000000000011000010111000010000000000000000000010000000000000000010000000000000000000010000010000100000001000000000000000010001000001000000000...
output:
707886122
result:
ok 1 number(s): "707886122"
Test #27:
score: 0
Accepted
time: 76ms
memory: 4280kb
input:
1000000 10 0100100000000000000000000000000100000000000100100000000000010000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000010000000000000000000000100000100000000000000000000000000000000000010000100000010000000000000000...
output:
979709914
result:
ok 1 number(s): "979709914"
Test #28:
score: 0
Accepted
time: 369ms
memory: 13080kb
input:
5000000 10 0000000000000000001000000000010000001000000000000000001000010000000000000000000000000000000000000000000000000000000000100000000000000000010001000000100000000000011000000000000000000001000000001000000000000000000000000000000000000000000000000001000000000000000000000001000100010000000001000...
output:
285627161
result:
ok 1 number(s): "285627161"
Test #29:
score: 0
Accepted
time: 378ms
memory: 12548kb
input:
5000000 10 0000000000000000000010000000010000000010000000000000000000000000000000000000000000000010000000000000000000000000001000000000000100000000000010000000000000000011000000000000000000000000000000000000000000000000000000000000000000010000000000000000010100100000010000000000000000000010000000000...
output:
303121972
result:
ok 1 number(s): "303121972"
Test #30:
score: 0
Accepted
time: 383ms
memory: 11464kb
input:
5000000 10 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
840451042
result:
ok 1 number(s): "840451042"
Test #31:
score: 0
Accepted
time: 368ms
memory: 12328kb
input:
5000000 10 0001001100000000000000000000000001000000000000010000000011000000000000000000000000010000000000000000000000000001001010000000100000000000000100000000000010101000010000010001000100000100000000000101000000010000000001010010000000000010100000000010000011000000000000000000000000000001000000000...
output:
5553929
result:
ok 1 number(s): "5553929"
Test #32:
score: 0
Accepted
time: 366ms
memory: 13352kb
input:
5000000 10 0000000000000000010000000000000000000000010000000000001000010100010010000110000000000000100010000000000000100000000000000010000000000000100000000000001100000000000000000000000000000100000000000000000000000000001010000000000100100000000000000000000000001000010100100011000000000000000000001...
output:
996917998
result:
ok 1 number(s): "996917998"