QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#830138#9914. 前往何方kgqyCompile Error//C++141.8kb2024-12-24 16:19:492024-12-24 16:19:50

Judging History

你现在查看的是最新测评结果

  • [2024-12-24 16:19:50]
  • 评测
  • [2024-12-24 16:19:49]
  • 提交

answer

#include<bits/stdc++.h>
#include "wheretoreach.h"
using namespace std;
int al,ed;
vector<int> vec;
vector<int> tv,ct;
int rk[100005];
int vis[100005];
int tadd(int u){
	vis[rk[u]]=1;
	return add(rk[u]);
}
int tremove(int u){
	if(!vis[rk[u]]) return 0;
	vis[rk[u]]=0;
	return remove(rk[u]);
}
void treport(int u,int v){
	report(rk[u],rk[v]);
}
void bs(int l,int r,vector<int> nt){
	if(!nt.size()) return;
	// printf("lr %d %d\nnt:",l,r);
	// for(int i=0;i<nt.size();i++) printf("%d ",nt[i]);puts("");
	if(l==r){
		for(int i=0;i<nt.size();i++){
			// printf("REPORTER %d %d\n",nt[i],tv[l]);
			treport(nt[i],tv[l]);
		}
		return;
	}
	vector<int> lt,rt;
	int mid=(l+r)>>1;
	if(i!=0||r!=ed) for(int i=l;i<=mid;i++) tadd(tv[i]);
	for(int i=0;i<nt.size();i++){
		int p=tadd(nt[i]);
		if(p>1) lt.push_back(nt[i]);
		else rt.push_back(nt[i]);
		tremove(nt[i]);
	}
	for(int i=l;i<=mid;i++) tremove(tv[i]);
	bs(l,mid,lt);
	if(lt.size()){
		for(int i=mid+1;i<=r;i++) tadd(tv[i]);
		for(int i=0;i<lt.size();i++){
			int p=tadd(lt[i]);
			if(p>1) rt.push_back(lt[i]);
			tremove(lt[i]);
		}
		for(int i=mid+1;i<=r;i++) tremove(tv[i]);
	}
	bs(mid+1,r,rt);
}
void mian(){
	tv.clear();ct.clear();
	for(int i=1;i<=al;i++) vis[i]=0;
	for(int i=0;i<vec.size();i++){
		int p=tadd(vec[i]);
		if(p>1) ct.push_back(vec[i]),tremove(vec[i]);
		else tv.push_back(vec[i]);
	}
	// for(int i=0;i<tv.size();i++) printf("%d ",tv[i]);puts("");
	if(!ct.size()) return;
	int mid=(0+tv.size())>>1;
	ed=tv.size()-1;
	for(int i=mid+1;i<tv.size();i++) tremove(tv[i]);
	bs(0,tv.size()-1,ct);
	vec=ct;
}
void solve(int n){
	al=n;
	for(int i=1;i<=n;i++) rk[i]=i,vec.push_back(i);
	mt19937 lrher(time(0));
	shuffle(rk+1,rk+1+n,lrher);
	while(vec.size()) mian();
}

详细

implementer.cpp: In function ‘void Interactor::init()’:
implementer.cpp:25:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   25 |                 scanf("%d",&n);
      |                 ~~~~~^~~~~~~~~
implementer.cpp:30:30: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   30 |                         scanf("%d%d",&x,&y); v[x].push_back(y),v[y].push_back(x);
      |                         ~~~~~^~~~~~~~~~~~~~
answer.code: In function ‘void bs(int, int, std::vector<int>)’:
answer.code:34:12: error: ‘i’ was not declared in this scope
   34 |         if(i!=0||r!=ed) for(int i=l;i<=mid;i++) tadd(tv[i]);
      |            ^