제출 #723981

#제출 시각아이디문제언어결과실행 시간메모리
723981victor_gaoVision Program (IOI19_vision)C++17
0 / 100
31 ms4300 KiB
#include "vision.h" #include <bits/stdc++.h> #define pii pair<int,int> #define x first #define y second #define MAXN 205 using namespace std; int n,m,k,aho[2*MAXN],ahx[2*MAXN],awo[2*MAXN],awx[2*MAXN]; vector<int>ad[2*MAXN],ms[2*MAXN],hs,Ws; vector<int>q[2]; void construct_network(int H, int W, int K) { n=H; m=W; k=K; for (int i=0;i<n;i++){ for (int j=0;j<m;j++){ ad[i+j].push_back(i*m+j); ms[i-j+m-1].push_back(i*m+j); } } int now=n*m-1; for (int i=0;i<=n+m-2;i++){ vector<int>qus; if (i+k<=n+m-2){ for (auto j:ad[i]) qus.push_back(j); int before; add_xor(qus); now++; before=now; qus.clear(); for (auto j:ad[i+k]) qus.push_back(j); add_or(qus); now++; add_and({before,now}); now++; q[0].push_back(now); } } for (int i=0;i<=n+m-2;i++){ vector<int>qus; if (i+k<=n+m-2){ for (auto j:ms[i]) qus.push_back(j); int before; add_xor(qus); now++; before=now; qus.clear(); for (auto j:ms[i+k]) qus.push_back(j); add_or(qus); now++; add_and({before,now}); now++; q[1].push_back(now); } } for (int i=0;i<n;i++){ vector<int>qus; for (int j=0;j<m;j++) qus.push_back(i*m+j); aho[i]=add_or(qus); now++; qus.push_back(aho[i]); ahx[i]=add_xor(qus); now++; } for (int i=0;i<m;i++){ vector<int>qus; for (int j=0;j<n;j++) qus.push_back(j*m+i); awo[i]=add_or(qus); now++; qus.push_back(aho[i]); awx[i]=add_xor(qus); now++; } for (int i=0;i<n;i++){ vector<int>qus,qus1; for (int j=i;j<min(m,i+k+1);j++){ qus.push_back(aho[i]); qus1.push_back(ahx[i]); } int p1=add_or(qus); now++; qus.push_back(p1); int p2=add_xor(qus); now++; qus1.push_back(p2); add_or(qus1); now++; hs.push_back(now); } for (int i=0;i<m;i++){ vector<int>qus,qus1; for (int j=i;j<min(n,i+k+1);j++){ qus.push_back(awo[i]); qus1.push_back(awx[i]); } int p1=add_or(qus); now++; qus.push_back(p1); int p2=add_xor(qus); now++; qus1.push_back(p2); add_or(qus1); now++; Ws.push_back(now); } vector<int>qus; // cout<<"Q : "; for (auto i:q[0]){ qus.push_back(i); // cout<<i<<" "; } // cout<<'\n'<<"Q : "; for (auto i:q[1]){ qus.push_back(i); // cout<<i<<" "; } /* cout<<'\n'; cout<<"hs : "; for (auto i:hs) cout<<i<<" "; cout<<"\nWs : "; for (auto i:Ws) cout<<i<<' '; cout<<'\n'; */ add_or(qus); now++; int have=now; qus.clear(); qus.push_back(have); add_or(hs); now++; qus.push_back(now); add_or(Ws); now++; qus.push_back(now); add_and(qus); }
#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...