Submission #1154956

#TimeUsernameProblemLanguageResultExecution timeMemory
1154956KhoaDuyChameleon's Love (JOI20_chameleon)C++17
0 / 100
0 ms440 KiB
#include "chameleon.h" #include<bits/stdc++.h> using namespace std; /*int Query(const vector<int> &p){ } void Answer(int a,int b){ }*/ vector<vector<int>> graph; vector<int> col; void DFS(int u){ for(int v:graph[u]){ if(col[v]==-1){ col[v]=(col[u]^1); DFS(v); } else{ assert(col[v]!=col[u]); } } } void Solve(int n){ graph.clear(); graph.resize(2*n+1); col.clear(); col.resize(2*n+1); for(int u=2;u<=2*n;u++){ for(int v=1;v<u;v++){ col[v]=-1; } for(int v=1;v<u;v++){ if(col[v]==-1){ DFS(v); } } vector<int> v; for(int i=1;i<u;i++){ if(col[i]==0){ v.push_back(i); } } if(!v.empty()){ v.push_back(u); while(Query(v)!=v.size()){ int low=0,high=v.size()-2; while(low<high){ int mid=((high-low)>>1)+low; vector<int> temp; temp.push_back(u); for(int i=0;i<=mid;i++){ temp.push_back(v[i]); } if(Query(temp)!=temp.size()){ high=mid; } else{ low=mid+1; } } graph[u].push_back(v[high]); graph[v[high]].push_back(u); v.erase(v.begin()+high); } } v.clear(); v.resize(0); for(int i=1;i<u;i++){ if(col[i]==1){ v.push_back(i); } } if(!v.empty()){ v.push_back(u); while(Query(v)!=v.size()){ int low=0,high=v.size()-2; while(low<high){ int mid=((high-low)>>1)+low; vector<int> temp; temp.push_back(u); for(int i=0;i<=mid;i++){ temp.push_back(v[i]); } if(Query(temp)!=temp.size()){ high=mid; } else{ low=mid+1; } } graph[u].push_back(v[high]); graph[v[high]].push_back(u); v.erase(v.begin()+high); } } } int gen[2*n+1]; for(int u=1;u<=2*n;u++){ if(graph[u].size()==1){ gen[u]=graph[u][0]; continue; } assert(graph[u].size()==3); vector<int> temp; temp={graph[u][0],graph[u][1]}; if(Query(temp)==1){ gen[u]=graph[u][2]; continue; } temp={graph[u][0],graph[u][2]}; if(Query(temp)==1){ gen[u]=graph[u][2]; continue; } temp={graph[u][1],graph[u][2]}; if(Query(temp)==1){ gen[u]=graph[u][0]; continue; } } for(int u=1;u<=2*n;u++){ if(u<gen[u]){ Answer(u,gen[u]); } } } /*signed main(){ }*/
#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...