QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#537669#4564. Digital CircuitYahia_Emara#4 188ms18644kbC++202.6kb2024-08-30 17:20:262024-08-30 17:20:27

Judging History

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

  • [2024-08-30 17:20:27]
  • 评测
  • 测评结果:4
  • 用时:188ms
  • 内存:18644kb
  • [2024-08-30 17:20:26]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define sz(x) int(x.size())
#define dbg(x) cout << (#x) << " : " << x << endl
#define pb push_back
#define all(x) x.begin(),x.end()
#define LOOP(n) for(int rp=0;rp<n;rp++)
#define sq(x) ((x)*(x))
typedef long long ll;
typedef long double dl;
const int SZ=5e5+7;
const ll INF=1e18+7;
const dl eps=1e-9;
int MOD=1e9+2022;
mt19937_64 rng(time(0));
int rnd(int l,int r){
    return uniform_int_distribution<int>(l,r)(rng);
}
ll trig(ll x){
    return x*(x+1)/2;
}
int getN(){
    int n;cin >> n;
    return n;
}
#define cmbntrcs fact[0]=1;for(int i=1;i<SZ;i++)fact[i]=mul(fact[i-1],i);finv[SZ-1]=inv(fact[SZ-1]);for(int i=SZ-2;i>0;i--)finv[i]=mul(finv[i+1],i+1);
int fact[SZ],finv[SZ];
int add(int x,int y,int MOD=MOD){
    x+=y;if(x>=MOD)x-=MOD;
    return x;
}
int sub(int x,int y,int MOD=MOD){
    x-=y;if(x<0)x+=MOD;
    return x;
}
int mul(int x,int y,int MOD=MOD){
    return(x*1ll*y)%MOD;
}
int pwr(int x,ll b,int MOD=MOD){
    int rt=1;
    while(b>0){
        if(b&1)rt=mul(rt,x,MOD);
        x=mul(x,x,MOD),b>>=1;
    }
    return rt;
}
int inv(int x,int MOD=MOD){
    return pwr(x,MOD-2,MOD);
}
#include "circuit.h"
//#include "stub.cpp"
int n,m,p[SZ],a[SZ],c[SZ],I[SZ];
vector<int>g[SZ],v;
int dp[1007][1007],N;
int solve(int i,int P){
    if(i==N)return(P?0:1);
    if(dp[i][P]!=-1)return dp[i][P];
    return dp[i][P]=add(mul(solve(i+1,P),sub(c[v[i]],a[v[i]])),mul(solve(i+1,(P?P-1:0)),a[v[i]]));
}
void calc(int i){
    v=g[i],N=sz(v);
    for(int i=0;i<=N;i++)for(int j=0;j<=N;j++)dp[i][j]=-1;
    a[i]=0;
    for(int P=1;P<=N;P++)a[i]=add(a[i],solve(0,P));
}
void init(int N,int M,vector<int>P,vector<int>A){
    n=N,m=M;
    for(int i=0;i<n+m;i++)p[i]=P[i],I[i]=0;
    for(int i=1;i<n+m;i++)g[p[i]].pb(i);
    for(int i=0;i<m;i++)a[i+n]=A[i],c[i+n]=1;
    for(int i=n-1;i>=0;i--){
        c[i]=sz(g[i]);
        for(auto&j:g[i])c[i]=mul(c[i],c[j]);
        calc(i);
    }
}
int prp(int i){
    for(int ch=i*2+1;ch<=i*2+2;ch++){
        if(I[i])a[ch]=sub(c[ch],a[ch]);
        I[ch]^=I[i];
    }
    I[i]=0;
}
void upd(int l,int r,int i=0,int lx=n,int rx=n+m-1){
    if(r<lx||rx<l)return;
    if(lx>=l&&rx<=r){
        I[i]^=1,a[i]=sub(c[i],a[i]);
        return;
    }
    //prp(i);
    int md=(lx+rx)>>1;
    upd(l,r,i*2+1,lx,md),upd(l,r,i*2+2,md+1,rx);
    calc(i);
}
int count_ways(int l,int r){
    upd(l,r);
    return a[0];
}
/*int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    //cout << fixed << setprecision(12);
    int tt=1;
    //cin >> tt;
    LOOP(tt){
        //code
    }
    return 0;
}
*/

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 2
Accepted
time: 2ms
memory: 14120kb

input:

1 2
-1 0 0
0 0
1 1
2 2
1 2
2 2
1 2
-1 -1
-2 -2

output:

1
2
0
1
1

result:

ok 7 lines

Test #2:

score: 2
Accepted
time: 1ms
memory: 14096kb

input:

1 1
-1 0
0
1 1
1 1
1 1
1 1
-1 -1
-2 -2

output:

1
0
1
0

result:

ok 6 lines

Test #3:

score: 0
Wrong Answer
time: 82ms
memory: 18292kb

input:

1 972
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...

output:

495
492
489
489
482

result:

wrong answer 3rd lines differ - expected: '509', found: '495'

Subtask #2:

score: 0
Wrong Answer

Test #9:

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

input:

1 2
-1 0 0
0 0
1 1
2 2
1 2
2 2
1 2
-1 -1
-2 -2

output:

1
2
0
1
1

result:

ok 7 lines

Test #10:

score: 7
Accepted
time: 3ms
memory: 14140kb

input:

255 256
-1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 ...

output:

52130940
785285606
585825652

result:

ok 5 lines

Test #11:

score: 0
Wrong Answer
time: 0ms
memory: 14388kb

input:

511 512
-1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 ...

output:

655368480
486298234
626529572
640949026
56412892

result:

wrong answer 4th lines differ - expected: '979089518', found: '486298234'

Subtask #3:

score: 0
Skipped

Dependency #1:

0%

Subtask #4:

score: 4
Accepted

Test #43:

score: 4
Accepted
time: 113ms
memory: 16084kb

input:

32767 32768
-1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...

output:

431985922
394586018
431985922
469385826
506785730
469385826
431985922
469385826
431985922
469385826
506785730
469385826
431985922
394586018
357186114
319786210
357186114
394586018
431985922
394586018
357186114
394586018
431985922
469385826
506785730
469385826
431985922
394586018
357186114
319786210
...

result:

ok 71356 lines

Test #44:

score: 4
Accepted
time: 188ms
memory: 16668kb

input:

65535 65536
-1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...

output:

913758140
928668562
913758140
898847718
883937296
869026874
883937296
898847718
913758140
928668562
913758140
898847718
883937296
898847718
913758140
928668562
913758140
898847718
913758140
928668562
943578984
928668562
913758140
928668562
913758140
898847718
883937296
869026874
883937296
898847718
...

result:

ok 100002 lines

Test #45:

score: 4
Accepted
time: 181ms
memory: 16608kb

input:

65535 65536
-1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...

output:

152530276
137619854
122709432
107799010
92888588
77978166
63067744
48157322
33246900
18336478
3426056
988517656
973607234
958696812
943786390
928875968
913965546
899055124
884144702
869234280
854323858
839413436
824503014
809592592
794682170
779771748
764861326
749950904
735040482
720130060
70521963...

result:

ok 100002 lines

Test #46:

score: 4
Accepted
time: 173ms
memory: 18644kb

input:

65535 65536
-1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...

output:

14910422
29820844
44731266
59641688
74552110
89462532
104372954
119283376
134193798
149104220
164014642
178925064
193835486
208745908
223656330
238566752
253477174
268387596
283298018
298208440
313118862
328029284
342939706
357850128
372760550
387670972
402581394
417491816
432402238
447312660
462223...

result:

ok 100002 lines

Subtask #5:

score: 0
Wrong Answer

Dependency #4:

100%
Accepted

Test #47:

score: 0
Wrong Answer
time: 177ms
memory: 16012kb

input:

32767 32768
-1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...

output:

105182172
904826008
717826488
934212166
815780348
656385346
321567850
439999668
805984962
95386786
872771024
386572272
134568330
981407456
142582076
625217548
534390248
701798996
496990344
636794574
384790632
329581596
97168426
217381884
292181692
823794094
589599284
85591400
56205242
477399572
6465...

result:

wrong answer 5th lines differ - expected: '249436868', found: '717826488'

Subtask #6:

score: 0
Skipped

Dependency #2:

0%

Subtask #7:

score: 0
Skipped

Dependency #3:

0%

Subtask #8:

score: 0
Skipped

Dependency #1:

0%