답안 #912701

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
912701 2024-01-19T18:13:33 Z biank 디지털 회로 (IOI22_circuit) C++17
0 / 100
14 ms 11096 KB
#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
typedef long long ll;
typedef pair<ll,ll> pll; 
#define ALL(x) x.begin(),x.end()
#define SIZE(x) (int)x.size()
#define forsn(i,s,n) for(int i=int(s);i<int(n);i++)
#define forn(i,n) for(int i=0;i<int(n);i++)
#define fst first
#define snd second
#define pb push_back
const int MAXN = 1e5;
const int MOD = 1e9+2022;
vi s, adj[MAXN], p;
int n, m;
int dp[MAXN][2];
 
int mul(int x, int y) {
    return int(1LL*x*y);
}

void add(int &x, int y) {
    x+=y;
    if(x>=MOD) x-=MOD;
}
 
void compute_dp(int u) {
    int l=adj[u][0], r=adj[u][1];
    
    int aux = mul(dp[l][0], dp[r][1]);
    add(aux, mul(dp[l][1], dp[r][0]));
    dp[u][1] = dp[u][0] = aux;
    
    aux = mul(mul(2, dp[l][0]), dp[r][0]);
    add(dp[u][0], aux);
    
    aux = mul(mul(2, dp[l][1]), dp[r][1]);
    add(dp[u][1], aux);
}
 
void dfs(int u) {
    if(SIZE(adj[u])==0) {
        dp[u][s[u-n]] = 1;
        dp[u][!s[u-n]] = 0;
    }
    int l=adj[u][0], r=adj[u][1];
    dfs(l), dfs(r);
    compute_dp(u);
}
 
void init(int N, int M, vi P, vi A) {
    s=A, n=N, m=M, p=P;
    forsn(i,1,n+m) adj[P[i]].pb(i);
    dfs(0);
}

void update(int u) {
    dp[u][0]^=1, dp[u][1]^=1;
    u=p[u];
    while(u!=-1) {
        compute_dp(u);
        u=p[u];
    }
}
 
int count_ways(int L, int R) {
    forsn(i,L,R+1) update(i);
    return dp[0][1];
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 6488 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 6348 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 6488 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 14 ms 11096 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 14 ms 11096 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 6348 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 6488 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 6488 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -