제출 #1211666

#제출 시각아이디문제언어결과실행 시간메모리
1211666serkanrashid디지털 회로 (IOI22_circuit)C++20
18 / 100
3082 ms5580 KiB
#include <bits/stdc++.h> #define endl "\n" using namespace std; const long long mod = 1e9 + 2022; const int MAXN = 1e5+5; int n,m; int p[MAXN],a[MAXN]; vector<int>g[MAXN]; 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]; if(i) g[p[i]].push_back(i); } for(int i = 0; i < m; i++) a[i] = A[i]; } long long dp[MAXN][2]; long long pd[MAXN]; void dfs(int beg) { if(beg >= n) return; for(int nb : g[beg]) dfs(nb);///smetnati int sz = g[beg].size(); for(int i = 0; i <= sz; i++) pd[i] = 0; pd[0] = 1; /*cout << "in_dfs " << beg << endl; bool f = false; if(beg == 1) f = true; if(f) cout << "special pechat" << endl; for(int i = 0; i <= sz; i++) cout << pd[i] << " "; cout << endl;*/ for(int j = 0; j < sz; j++) { int nb = g[beg][j]; for(int i = sz; i >= 0; i--) { pd[i] = (pd[i]*dp[nb][0])%mod; pd[i] += (pd[i-1]*dp[nb][1])%mod; pd[i] %= mod; } /*cout << nb << " " << dp[nb][0] << " " << dp[nb][1] << "-> "; for(int i = 0; i <= sz; i++) cout << pd[i] << " "; cout << endl;*/ } //for(int i = 0; i <= sz; i++) cout << pd[i] << " "; //cout << endl; for(int br1 = 0; br1 <= sz; br1++) { dp[beg][1] += (pd[br1]*(br1))%mod; dp[beg][1] %= mod; dp[beg][0] += (pd[br1]*(sz-br1))%mod; dp[beg][0] %= mod; } } void solve() { /*cout << endl; cout << "START solve" << endl; for(int i = n; i < n+m; i++) cout << a[i-n] << " "; cout << endl;*/ for(int i = 0; i < n+m; i++) dp[i][0] = dp[i][1] = 0; for(int i = 0; i < m; i++) dp[i+n][a[i]] = 1; dfs(0); /*for(int i = 0; i < n+m; i++) cout << dp[i][0] << " "; cout << endl; for(int i = 0; i < n+m; i++) cout << dp[i][1] << " "; cout << endl;*/ } int count_ways(int L, int R) { L -= n; R -= n; for(int i = L; i <= R; i++) a[i] ^= 1; solve(); return (int)dp[0][1]; }
#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...