제출 #829758

#제출 시각아이디문제언어결과실행 시간메모리
829758beaconmc디지털 회로 (IOI22_circuit)C++17
18 / 100
3096 ms11556 KiB
#include "circuit.h" #include <bits/stdc++.h> typedef long long ll; using namespace std; #define FOR(i, x, y) for(ll i=x; i<y; i++) #define FORNEG(i, x, y) for(ll i=x; i>y; i--) #define fast() ios_base::sync_with_stdio(false);cin.tie(NULL) vector<ll> edges[100001]; ll possible[100001]; ll on[100001]; bool state[100001]; int initdfs(ll a){ if (edges[a].size() == 0) return possible[a] = 1; ll temp = 1; for (auto&i : edges[a]){ temp *= initdfs(i); temp %= 1000002022; } temp *= edges[a].size(); temp %= 1000002022; return possible[a] = temp; } void dfs2(ll a){ if (edges[a].size()==0){ on[a] = state[a]; return; } ll dp[edges[a].size()+1][edges[a].size()+1]; FOR(i,0,edges[a].size()+1) FOR(j,0,edges[a].size()+1) dp[i][j] = 0; dp[0][0] = 1; FOR(i,0,edges[a].size()){ dfs2(edges[a][i]); FOR(j,0,edges[a].size()){ dp[i+1][j] += (dp[i][j] * (possible[edges[a][i]] - on[edges[a][i]]))%1000002022; dp[i+1][j+1] += (dp[i][j] * on[edges[a][i]])%1000002022; } } ll ans = 0; ll cur = 0; FORNEG(i,edges[a].size(),0){ ans += dp[edges[a].size()][i] * i; ans %= 1000002022; } on[a] = (ans+1000002022)%1000002022; } void init(int N, int M, std::vector<int> P, std::vector<int> A) { FOR(i,1,N+M){ edges[P[i]].push_back(i); } FOR(i,N,N+M){ state[i] = A[i-N]; } initdfs(0); } int count_ways(int L, int R) { FOR(i,0,100001) on[i] = -1; FOR(i,L,R+1){ state[i] = (state[i]+1)%2; } dfs2(0); return on[0]; }

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

circuit.cpp: In function 'void dfs2(ll)':
circuit.cpp:10:35: 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]
   10 | #define FOR(i, x, y) for(ll i=x; i<y; i++)
......
   47 |   FOR(i,0,edges[a].size()+1) FOR(j,0,edges[a].size()+1) dp[i][j] = 0;
      |       ~~~~~~~~~~~~~~~~~~~~~        
circuit.cpp:47:3: note: in expansion of macro 'FOR'
   47 |   FOR(i,0,edges[a].size()+1) FOR(j,0,edges[a].size()+1) dp[i][j] = 0;
      |   ^~~
circuit.cpp:10:35: 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]
   10 | #define FOR(i, x, y) for(ll i=x; i<y; i++)
......
   47 |   FOR(i,0,edges[a].size()+1) FOR(j,0,edges[a].size()+1) dp[i][j] = 0;
      |                                  ~~~~~~~~~~~~~~~~~~~~~
circuit.cpp:47:30: note: in expansion of macro 'FOR'
   47 |   FOR(i,0,edges[a].size()+1) FOR(j,0,edges[a].size()+1) dp[i][j] = 0;
      |                              ^~~
circuit.cpp:10:35: 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]
   10 | #define FOR(i, x, y) for(ll i=x; i<y; i++)
......
   53 |   FOR(i,0,edges[a].size()){
      |       ~~~~~~~~~~~~~~~~~~~          
circuit.cpp:53:3: note: in expansion of macro 'FOR'
   53 |   FOR(i,0,edges[a].size()){
      |   ^~~
circuit.cpp:10:35: 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]
   10 | #define FOR(i, x, y) for(ll i=x; i<y; i++)
......
   55 |     FOR(j,0,edges[a].size()){
      |         ~~~~~~~~~~~~~~~~~~~        
circuit.cpp:55:5: note: in expansion of macro 'FOR'
   55 |     FOR(j,0,edges[a].size()){
      |     ^~~
circuit.cpp:64:6: warning: unused variable 'cur' [-Wunused-variable]
   64 |   ll cur = 0;
      |      ^~~
#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...