Submission #1001066
Source Code Expand
#include<stdio.h> #include<vector> #include<algorithm> using namespace std; typedef long long ll; ll mod=1000000007; typedef vector<vector<int> >mat; int getrank(mat m) { int r=0; for(int i=0;i<m.size();i++) { for(int j=r;j<m.size();j++) { if(m[j][i]==1) { swap(m[r],m[j]); for(int k=r+1;k<m.size();k++) { if(m[k][i]==1) { for(int l=0;l<m.size();l++)m[k][l]^=m[r][l]; } } r++; break; } } } return r; } ll po(ll a,ll b) { if(b==0)return 1; ll z=po(a,b/2); z=z*z%mod; if(b%2==1)z=z*a%mod; return z; } ll inv(ll a) { return po(a,mod-2); } ll dp[500][500];//rank rの行列の数 ll db[500];//d次元subvectorspaceの数 ll p2[500]; ll inv2[500][500]; int main() { int num; scanf("%d",&num); mat m; m.resize(num); for(int i=0;i<num;i++) { for(int j=0;j<num;j++) { int z; scanf("%d",&z); m[i].push_back(z); } } int r=getrank(m); p2[0]=1; for(int i=1;i<500;i++)p2[i]=p2[i-1]*2%mod; dp[0][0]=1; for(int i=0;i<num;i++) { for(int j=0;j<num;j++) { dp[i+1][j]+=dp[i][j]*p2[j]; dp[i+1][j+1]+=dp[i][j]*(p2[num]+mod-p2[j]); dp[i+1][j]%=mod; dp[i+1][j+1]%=mod; } } for(int i=0;i<500;i++)for(int j=0;j<500;j++)inv2[i][j]=inv((p2[i]+mod-p2[j])%mod); for(int i=0;i<=num;i++) { ll x=1; for(int j=0;j<i;j++) { x*=(p2[num]+mod-p2[j]); x%=mod; } for(int j=0;j<i;j++) { x*=inv2[i][j]; x%=mod; } db[i]=x; } ll ans=0; for(int a=r;a<=num;a++) { for(int b=r;b<=num&&a+b-num<=r;b++) { int s=r,t=b-r,u=(num-a)-(b-r); //printf("%d %d %d\n",s,t,u); ll x=1; for(int i=0;i<s+t+u;i++) { x*=(p2[num]+mod-p2[i]); x%=mod; } for(int i=0;i<t;i++) { x*=inv2[t][i]; x%=mod; } for(int i=0;i<s;i++) { x*=inv2[s+t][i+t]; x%=mod; } for(int i=0;i<u;i++) { x*=inv2[u+t][i+t]; x%=mod; } ll kak=x*inv(db[a])%mod*inv(db[b])%mod; //printf("%d %d %lld %lld %lld\n",a,b,x,kak,dp[num][a]*dp[num][b]%mod*kak%mod); ans+=dp[num][a]*dp[num][b]%mod*kak; ans%=mod; } } printf("%lld\n",ans*inv(dp[num][r])%mod); }
Submission Info
Submission Time | |
---|---|
Task | H - AB=C Problem |
User | DEGwer |
Language | C++14 (GCC 5.4.1) |
Score | 1500 |
Code Size | 2229 Byte |
Status | AC |
Exec Time | 559 ms |
Memory | 4128 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:51:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&num); ^ ./Main.cpp:59:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&z); ^
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1500 / 1500 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example0.txt, example1.txt |
All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, example0.txt, example1.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
000.txt | AC | 195 ms | 2176 KB |
001.txt | AC | 196 ms | 2176 KB |
002.txt | AC | 196 ms | 2176 KB |
003.txt | AC | 196 ms | 2176 KB |
004.txt | AC | 196 ms | 2176 KB |
005.txt | AC | 196 ms | 2176 KB |
006.txt | AC | 196 ms | 2176 KB |
007.txt | AC | 196 ms | 2176 KB |
008.txt | AC | 196 ms | 2176 KB |
009.txt | AC | 196 ms | 2176 KB |
010.txt | AC | 196 ms | 2176 KB |
011.txt | AC | 196 ms | 2176 KB |
012.txt | AC | 196 ms | 2176 KB |
013.txt | AC | 196 ms | 2176 KB |
014.txt | AC | 199 ms | 2816 KB |
015.txt | AC | 218 ms | 2816 KB |
016.txt | AC | 199 ms | 2560 KB |
017.txt | AC | 328 ms | 3280 KB |
018.txt | AC | 202 ms | 2560 KB |
019.txt | AC | 196 ms | 2176 KB |
020.txt | AC | 213 ms | 3072 KB |
021.txt | AC | 285 ms | 4128 KB |
022.txt | AC | 204 ms | 2560 KB |
023.txt | AC | 459 ms | 4008 KB |
024.txt | AC | 215 ms | 4120 KB |
025.txt | AC | 318 ms | 4120 KB |
026.txt | AC | 261 ms | 4120 KB |
027.txt | AC | 370 ms | 4120 KB |
028.txt | AC | 535 ms | 4120 KB |
029.txt | AC | 302 ms | 4120 KB |
030.txt | AC | 272 ms | 4120 KB |
031.txt | AC | 334 ms | 4120 KB |
032.txt | AC | 556 ms | 4120 KB |
033.txt | AC | 240 ms | 4120 KB |
034.txt | AC | 559 ms | 4120 KB |
035.txt | AC | 380 ms | 3492 KB |
036.txt | AC | 214 ms | 4120 KB |
037.txt | AC | 211 ms | 3916 KB |
038.txt | AC | 545 ms | 4128 KB |
039.txt | AC | 214 ms | 4128 KB |
example0.txt | AC | 196 ms | 2176 KB |
example1.txt | AC | 196 ms | 2176 KB |