QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#553734#9241. SphinxJohnAlfnovCompile Error//C++143.8kb2024-09-08 19:11:522024-09-08 19:11:52

Judging History

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

  • [2024-09-08 19:11:52]
  • 评测
  • [2024-09-08 19:11:52]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#ifdef ONLINE_JUDGE
#include "sphinx.h"
#endif
#ifndef ONLINE_JUDGE
int a[1005],b[1005],cnt=0;
int perform_experiment(vector<int>E){
	printf("%d\n",++cnt);
	int sz=E.size();
	for(int i=0;i<sz;++i){
		b[i]=(E[i]==-1?a[i]:E[i]);
	}
	int ans=1;
	for(int i=0;i<sz-1;++i)ans+=(b[i]!=b[i+1]);
	return ans;
}
#endif
int n,m;
vector<int>C,G;
int fa[255],u[100005],v[100005];
int findfather(int x){
	return x==fa[x]?x:fa[x]=findfather(fa[x]);
}
int aa[255];
int findaa(int x){
	return x==aa[x]?x:aa[x]=findaa(aa[x]);
}
vector<int>gg[255];
int ss[255],vist[255],tt,I;
int query(int l,int r){
	for(int i=0;i<n;++i)vist[i]=0,aa[i]=i,C[i]=n;
	for(int i=l;i<=r;++i)for(auto cu:gg[ss[i]])vist[cu]=1,C[cu]=-1;
	vist[I]=1,C[I]=-1;
	for(int i=0;i<m;++i)if(!vist[u[i]]&&!vist[v[i]]){
		int fu=findaa(u[i]),fv=findaa(v[i]);
		if(fu!=fv)aa[fu]=fv;
	}
	int cnt=0;
	for(int i=0;i<n;++i)if(!vist[i]&&aa[i]==i)++cnt;
	return r-l+1+1+cnt-perform_experiment(C);
}
void solve(int l,int r,int k){
	if(!k)return;
	if(l==r){
		fa[ss[l]]=I;
		return;
	}
	int mid=(l+r)>>1;
	int k1=query(l,mid);
	solve(l,mid,k1);
	solve(mid+1,r,k-k1);
}
int s1[255],s2[255];
vector<int>g[255];
int dep[255];
void dfs(int x){
	vist[x]=1;
	for(auto cu:g[x])if(!vist[cu]){
		dep[cu]=dep[x]+1;
		dfs(cu);
	}
}
int query1(int l,int r,int d){
	for(int i=0;i<n;++i)vist[i]=0,aa[i]=i,C[i]=d;
	for(int i=l;i<=r;++i)for(auto cu:gg[s1[i]])vist[cu]=1,C[cu]=-1;
	for(int i=0;i<m;++i)if(!vist[u[i]]&&!vist[v[i]]){
		int fu=findaa(u[i]),fv=findaa(v[i]);
		if(fu!=fv)aa[fu]=fv;
	}
	int cnt=0;
	for(int i=0;i<n;++i)if(!vist[i]&&aa[i]==i)++cnt;
	return r-l+1+cnt-perform_experiment(C);
}
int query2(int l,int r,int d){
	for(int i=0;i<n;++i)vist[i]=0,aa[i]=i,C[i]=d;
	for(int i=l;i<=r;++i)for(auto cu:gg[s2[i]])vist[cu]=1,C[cu]=-1;
	for(int i=0;i<m;++i)if(!vist[u[i]]&&!vist[v[i]]){
		int fu=findaa(u[i]),fv=findaa(v[i]);
		if(fu!=fv)aa[fu]=fv;
	}
	int cnt=0;
	for(int i=0;i<n;++i)if(!vist[i]&&aa[i]==i)++cnt;
	return r-l+1+cnt-perform_experiment(C);
}
void solve1(int l,int r,int k,int d){
	if(!k)return;
	if(l==r){
		G[s1[l]]=d;
		return;
	}
	int mid=(l+r)>>1;
	int k1=query1(l,mid,d);
	solve1(l,mid,k1,d);
	solve1(mid+1,r,k-k1,d);
}
void solve2(int l,int r,int k,int d){
	if(!k)return;
	if(l==r){
		G[s2[l]]=d;
		return;
	}
	int mid=(l+r)>>1;
	int k1=query2(l,mid,d);
	solve2(l,mid,k1,d);
	solve2(mid+1,r,k-k1,d);
}
vector<int>find_colours(int N,vector<int>X,vector<int>Y){
	n=N;m=X.size();
	C.resize(n);G.resize(n);
	for(int i=0;i<m;++i)u[i]=X[i],v[i]=Y[i];
	for(int i=0;i<n;++i)fa[i]=i;
	for(int i=1;i<n;++i){
		I=i;
		for(int j=0;j<i;++j)gg[j].clear();
		for(int j=0;j<i;++j){
			gg[findfather(j)].emplace_back(j);
		}
		tt=0;
		for(int j=0;j<i;++j)if(gg[j].size())ss[++tt]=j;
		solve(1,tt,query(1,tt));
	}
	for(int j=0;j<n;++j)gg[j].clear();
	for(int j=0;j<n;++j){
		gg[findfather(j)].emplace_back(j);
	}
	for(int i=0;i<n;++i)g[i].clear();
	for(int i=0;i<m;++i)if(findfather(u[i])!=findfather(v[i])){
		int fu=fa[u[i]],fv=fa[v[i]];
		g[fu].emplace_back(fv);
		g[fv].emplace_back(fu);
	}
	int r=findfather(0);
	for(int i=0;i<n;++i)vist[i]=0;
	dep[r]=0;dfs(r);
	int t1=0,t2=0;
	for(int i=0;i<n;++i)if(fa[i]==i){
		if(dep[i]%2)s1[++t1]=i;
		else s2[++t2]=i;
	}
	for(int d=0;d<n;++d){
		if(t1)solve1(1,t1,query1(1,t1,d),d);
		if(t2)solve2(1,t2,query2(1,t2,d),d);
	}
	for(int i=0;i<n;++i)G[i]=G[fa[i]];
	return G;
}
#ifndef ONLINE_JUDGE
int main(){
	int n;
	cin>>n;
	mt19937 mt(1377);
	for(int i=0;i<n;++i)a[i]=mt()%5;
	vector<int>X(n-1),Y(n-1);
	for(int i=0;i<n-1;++i){
		X[i]=i,Y[i]=i+1;
	}
	auto ans=find_colours(n,X,Y);
	for(int i=0;i<n;++i)printf("%d ",a[i]);
	printf("\n");
	for(int i=0;i<n;++i)printf("%d ",ans[i]);
	return 0;
}
#endif

詳細信息

implementer.cpp: In function ‘int {anonymous}::sz(const C&)’:
implementer.cpp:26:52: error: ‘size’ is not a member of ‘std’; did you mean ‘size_t’?
   26 | template<class C> int sz(const C& c) { return std::size(c); }
      |                                                    ^~~~
      |                                                    size_t