제출 #1212771

#제출 시각아이디문제언어결과실행 시간메모리
1212771qwusha디지털 회로 (IOI22_circuit)C++20
0 / 100
7 ms2600 KiB
#include <bits/stdc++.h>
#include "circuit.h"
using namespace std;
#define fi first
#define se second
typedef long long ll;
typedef long double ld;
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
int inf = 1e9;


ll mod = 1000002022;

vector<ll> a;
ll n, m;
vector<pair<ll, ll>> g;

void init(int N, int M, vector<int> p, vector<int> A) {
    n = N;
    m = M;
    a.resize(m);
    for (ll i = 0; i < m; i++) {
        a[i] = A[i];
    }
    g.resize(n, {-1, -1});
    for (ll i = 1; i < p.size(); i++) {
        if (g[p[i]].fi == -1) {
            g[p[i]].fi = i;
        } else {
            g[p[i]].se = i;
        }
    }

}

int count_ways(int l, int r) {
    for (ll i = l - n; i <= r - n; i++) {
        a[i] = 1 - a[i];
    }
    vector<pair<ll, ll>> dp(n + m, {0, 0});
    for (ll i = 0; i < m; i++) {
        if (a[i] == 0) {
            dp[n + i].fi = 1;
        } else {
            dp[n + 1].se = 1;
        }
    }
    for (ll i = n - 1; i >= 0; i++) {
        ll v = g[i].fi, u = g[i].se;
        dp[i].fi = ((dp[v].fi * dp[u].fi) * 2) % mod;
        dp[i].fi = (dp[i].fi + (dp[v].fi * dp[u].se) + (dp[v].se * dp[u].fi)) % mod;
        dp[i].se = ((dp[v].fi * dp[u].se) + (dp[v].se * dp[u].fi)) % mod;
        dp[i].se = (dp[i].se + (dp[v].se * dp[u].se) * 2) % mod;
    }
    int ans = (dp[0].se % mod);
    return ans;
}
/*
signed main() {
    int N, M;
    cin >> N >> M;
    vector<int> p(N + M), A(M);
    for (int i = 0; i < N + M; i++) {
        cin >> p[i];
    }
    for (int i = 0; i < M; i++) {
        cin >> A[i];
    }
    init(N,M,p,A);
    int res = count_ways(3, 4);
    cout << res << '\n';
}*/
#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...