QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#537658 | #4564. Digital Circuit | Yahia_Emara# | 4 | 180ms | 18680kb | C++20 | 2.7kb | 2024-08-30 17:16:45 | 2024-08-30 17:16:45 |
Judging History
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 p,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);*/
if(lx==rx){
a[i]^=1;
return;
}
int md=(lx+rx)>>1;
if(p<=md)upd(p,i*2+1,lx,md);
else upd(p,i*2+2,md+1,rx);
calc(i);
}
int count_ways(int l,int r){
upd(l);
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;
}
*/
詳細信息
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 14188kb
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 1 0 1
result:
wrong answer 5th lines differ - expected: '0', found: '1'
Subtask #2:
score: 0
Wrong Answer
Test #9:
score: 0
Wrong Answer
time: 2ms
memory: 14380kb
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 1 0 1
result:
wrong answer 5th lines differ - expected: '0', found: '1'
Subtask #3:
score: 0
Skipped
Dependency #1:
0%
Subtask #4:
score: 4
Accepted
Test #43:
score: 4
Accepted
time: 100ms
memory: 16064kb
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: 164ms
memory: 18680kb
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: 168ms
memory: 18516kb
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: 180ms
memory: 18648kb
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: 93ms
memory: 13956kb
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:
2777846 40177750 2777846 965379964 927980060 965379964 927980060 965379964 927980060 965379964 2777846 965379964 927980060 890580156 927980060 890580156 853180252 815780348 778380444 815780348 853180252 890580156 927980060 890580156 927980060 965379964 927980060 890580156 927980060 965379964 9279800...
result:
wrong answer 3rd lines differ - expected: '105182172', found: '2777846'
Subtask #6:
score: 0
Skipped
Dependency #2:
0%
Subtask #7:
score: 0
Skipped
Dependency #3:
0%
Subtask #8:
score: 0
Skipped
Dependency #1:
0%