超级无敌水紫有疑求hack
查看原帖
超级无敌水紫有疑求hack
741169
Xlw6friend楼主2024/8/6 14:47

fc了20多分钟都查不出锅

自己的代码O(n),80pts

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
#define ll long long
#define pii pair<int,int>
const int mod = 1e9+7;
inline int read() {
	int x=0,f=1;char C=getchar();
	while(!isdigit(C)){if(C=='-') f=-1;C=getchar();}
	while(isdigit(C)) x=x*10+(C^48),C=getchar();
	return x*f;
}
inline void write(int x){
    if(x<0){putchar('-'); x=-x;}
    if(x>9) write(x/10);
    putchar(x%10+'0');
}
int n,m,u,v,f[N],de[N],ans;
vector<int>e[N];
void dfs0(int u,int fa)
{
	for(auto v:e[u])
	{
		if(v==fa)continue;
		de[v]=de[u]+1;
		dfs0(v,u);
	}
}
void dfs(int u,int fa)
{
	ans=max(ans,f[u]/de[u]+(f[u]%de[u]!=0));
	for(auto v:e[u])
	{
		if(v==fa)continue;
		f[v]=f[u]+(int)e[v].size()-1;
		dfs(v,u);
	}
}
signed main()
{
	n=read();
	for(int i=1;i<n;i++)
	{
		u=read();v=read();
		e[u].push_back(v);
		e[v].push_back(u);
	}
	de[1]=1;
	dfs0(1,0);
	f[1]=(int)e[1].size();
	dfs(1,0);
	cout<<ans<<endl;
	//for(int i=1;i<=n;i++)
	//	cout<<f[i]<<" "<<de[i]<<endl;
 	return 0;
}

根据题解O(nlogn)二分答案思路写的代码,100pts

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
#define ll long long
#define pii pair<int,int>
const int mod = 1e9+7;
inline int read() {
	int x=0,f=1;char C=getchar();
	while(!isdigit(C)){if(C=='-') f=-1;C=getchar();}
	while(isdigit(C)) x=x*10+(C^48),C=getchar();
	return x*f;
}
inline void write(int x){
    if(x<0){putchar('-'); x=-x;}
    if(x>9) write(x/10);
    putchar(x%10+'0');
}
int n,m,u,v,f[N],de[N],ans;
vector<int>e[N];
void dfs0(int u,int fa)
{
	for(auto v:e[u])
	{
		if(v==fa)continue;
		de[v]=de[u]+1;
		dfs0(v,u);
	}
}
void dfs(int u,int fa)
{
	ans=max(ans,f[u]/de[u]+(f[u]%de[u]!=0));
	for(auto v:e[u])
	{
		if(v==fa)continue;
		f[v]=f[u]+(int)e[v].size()-1;
		dfs(v,u);
	}
}
signed main()
{
	n=read();
	for(int i=1;i<n;i++)
	{
		u=read();v=read();
		e[u].push_back(v);
		e[v].push_back(u);
	}
	de[1]=1;
	dfs0(1,0);
	f[1]=(int)e[1].size();
	dfs(1,0);
	cout<<ans<<endl;
	//for(int i=1;i<=n;i++)
	//	cout<<f[i]<<" "<<endl;
 	return 0;
}
2024/8/6 14:47
加载中...