제출 #824313

#제출 시각아이디문제언어결과실행 시간메모리
824313vjudge1디지털 회로 (IOI22_circuit)C++17
2 / 100
9 ms2000 KiB
#include "circuit.h" #include<bits/stdc++.h> using namespace std; vector<int> adj[1010]; int state[1010], n, m; void init(int N, int M, vector<int> P, vector<int> A) { n=N; m=M; for(int i = 0; i < M; i++) state[i+N] = A[i]; for(int i = 1; i < n+m; i++) adj[P[i]].push_back(i); } pair<long long, long long> dfs(int N) { if(N>=n) { return {!state[N], state[N]}; } long long dp[1+adj[N].size()]{}, c = adj[N].size(); dp[0] = 1; for(auto i: adj[N]) { int a, b; tie(a,b)=dfs(i); for(int j= c+1; --j;) dp[j] = (a*dp[j]+b*dp[j-1])%1000002022; dp[0] = dp[0]*a%1000002022; } long long ans1=0, ans2=0; for(int i = 0; i <= c; i++) ans1+=(c-i)*dp[i], ans2+=i*dp[i]; return {ans1%1000002022, ans2%1000002022}; } int count_ways(int L, int R) { for(int i = L; i <= R; i++) { state[i]^=1; } return dfs(0).second; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...