제출 #1024486

#제출 시각아이디문제언어결과실행 시간메모리
1024486vjudge1디지털 회로 (IOI22_circuit)C++17
9 / 100
3053 ms8376 KiB
#include "circuit.h"
#include <bits/stdc++.h>

#define ll long long
#define sz(s) (int)s.size()
#define pb push_back

using namespace std;

const int MAX=2e5+10;
const int mod=1000002022;

int n,m;
vector<int> a;
vector<int> g[MAX];
int dp[MAX],s[MAX];

void dfs(int v){
    if(g[v].empty()){
        dp[v]=a[v-n];
        s[v]=1;
        return;
    }
    s[v]=sz(g[v]);
    for(auto to:g[v]){
        dfs(to);
        s[v]=s[v]*1ll*s[to]%mod;
    }
    vector<int> d(n+m,0);
    d[0]=1;
    for(int i=0;i<sz(g[v]);i++){
        int to=g[v][i];
        for(int j=i+1;j>=0;j--){
            int p=d[j];
            d[j]=d[j]*1ll*(s[to]-dp[to]+mod)%mod;
            if(j-1>=0)d[j]+=d[j-1]*1ll*dp[to]%mod;
            d[j]%=mod;
        }
    }
    for(int i=1;i<=sz(g[v]);i++){
        dp[v]+=i*d[i]%mod;
        dp[v]%=mod;
    }
}

void init(int N, int M,vector<int> P,vector<int> A) {
    n=N;
    m=M;
    a=A;
    for(int i=1;i<N+M;i++){
        g[P[i]].pb(i);
    }
}

int count_ways(int L, int R) {
    for(int i=0;i<n+m;i++)dp[i]=0;
    for(int i=L;i<=R;i++)a[i-n]^=1;
    dfs(0);
    // for(int i=0;i<n;i++)cout<<dp[i]<<" "<<(s[i]-dp[i])<<"\n";
    // cout<<"\n";
    return dp[0];
}

컴파일 시 표준 에러 (stderr) 메시지

circuit.cpp: In function 'void dfs(int)':
circuit.cpp:34:17: warning: unused variable 'p' [-Wunused-variable]
   34 |             int p=d[j];
      |                 ^
#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...