이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "circuit.h"
#include <bits/stdc++.h>
#define N 100020
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
using namespace std;
const int mod = 1000002022;
int yes[N], no[N], state[N],pai[N], n,m;
vector<int> grafo[N];
void multiply(vector<int>& poly, int x){
if(poly.empty()){
poly = {no[x], yes[x]};
return;
}
vector<int> ans;
for(int i = 0; i < sz(poly); i++){
int A = (1LL*poly[i]*no[x])%mod;
int B = 0;
if(i >= 1) B = (1LL*poly[i-1]*yes[x])%mod;
ans.pb((A+B)%mod);
}
ans.pb( (1LL*poly.back()*yes[x])%mod);
poly = ans;
}
void solve(int x){
yes[x] = no[x] = 0;
if(x >= n){
yes[x] = state[x];
no[x] = (1-state[x]);
return;
}
vector<int> poly;
for(auto v: grafo[x]){
solve(v);
multiply(poly, v);
}
vector<int> pref;
for(int i = 0; i < sz(poly); i++){
pref.pb( (pref.empty()?0:pref.back()) + poly[i]);
pref.back() %= mod;
}
for(int p = 1; p <= sz(grafo[x]); p++){
yes[x] += (pref.back() - pref[p-1] + mod)%mod;
no[x] += (pref[p-1] + mod)%mod;
no[x] %= mod;
yes[x] %= mod;
}
}
void init(int n_, int m_, vector<int> P, vector<int> A) {
n = n_, m = m_;
for(int i = 1; i < n+m; i++){
grafo[P[i]].pb(i);
pai[i] = P[i];
}
for(int i = 0;i<m;i++) state[i+n] = A[i];
}
int count_ways(int L, int R) {
for(int i = L; i <= R; i++) state[i] ^= 1;
solve(0);
return yes[0];
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |