제출 #812187

#제출 시각아이디문제언어결과실행 시간메모리
812187andrei_boaca디지털 회로 (IOI22_circuit)C++17
18 / 100
3091 ms10932 KiB
#include "circuit.h" #include <bits/stdc++.h> #include <vector> //#include "stub.cpp" using namespace std; typedef long long ll; const ll mod=1e9+2022; ll a[300005],par[300005]; ll n,m,minim[300005],maxim[300005],dp[2][300005],toprop[300005]; vector<ll> muchii[300005]; ll nr[300005],aux[300005]; void calc(int nod) { dp[1][nod]=dp[0][nod]=0; for(int j=0;j<=muchii[nod].size();j++) nr[j]=0; nr[0]=1; for(int i=0;i<muchii[nod].size();i++) { for(int j=0;j<=i+1;j++) aux[j]=0; for(int j=0;j<=i+1;j++) { ll val=(nr[j]*dp[0][muchii[nod][i]])%mod; aux[j]=(aux[j]+val)%mod; if(j>0) { val=(nr[j-1]*dp[1][muchii[nod][i]])%mod; aux[j]=(aux[j]+val)%mod; } } for(int j=0;j<=i+1;j++) nr[j]=aux[j]; } for(ll i=0;i<=muchii[nod].size();i++) { ll nr1=(nr[i]*i)%mod; dp[1][nod]=(dp[1][nod]+nr1)%mod; ll nr0=(1LL*nr[i]*(muchii[nod].size()-i))%mod; dp[0][nod]=(dp[0][nod]+nr0)%mod; } } void build(int nod) { dp[1][nod]=dp[0][nod]=0; if(muchii[nod].size()==0) { dp[a[nod]][nod]=1; dp[1-a[nod]][nod]=0; return; } for(int i:muchii[nod]) build(i); calc(nod); } void init(int N, int M, std::vector<int> P, std::vector<int> A) { n=N; m=M; for(int i=0;i<P.size();i++) { par[i]=P[i]; if(i!=0) muchii[par[i]].push_back(i); } for(int i=0;i<A.size();i++) a[i+n]=A[i]; build(0); } int count_ways(int L, int R) { for(int i=L;i<=R;i++) a[i]^=1; build(0); return dp[1][0]; }

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

circuit.cpp: In function 'void calc(int)':
circuit.cpp:16:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |     for(int j=0;j<=muchii[nod].size();j++)
      |                 ~^~~~~~~~~~~~~~~~~~~~
circuit.cpp:19:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |     for(int i=0;i<muchii[nod].size();i++)
      |                 ~^~~~~~~~~~~~~~~~~~~
circuit.cpp:36:17: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for(ll i=0;i<=muchii[nod].size();i++)
      |                ~^~~~~~~~~~~~~~~~~~~~
circuit.cpp: In function 'void init(int, int, std::vector<int>, std::vector<int>)':
circuit.cpp:61:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |     for(int i=0;i<P.size();i++)
      |                 ~^~~~~~~~~
circuit.cpp:67:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |     for(int i=0;i<A.size();i++)
      |                 ~^~~~~~~~~
#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...