神秘错误
  • 板块P4178 Tree
  • 楼主kczw
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/1 20:23
  • 上次更新2024/7/1 20:26:19
查看原帖
神秘错误
602833
kczw楼主2024/7/1 20:23

代码 5050 分,WA on #1 #7 #8 #9 #10,下载样例一运行代码后发现答案与样例相同,但是依然 WA on #1。测试机表示我的代码输出的第一个字符为 '3',但本地输出 '7' 与答案相同。

样例一

#include<bits/stdc++.h>
#define _v p.first
#define _w p.second
#define lb(x) (-x&x)
using namespace std;
const int N(4e4+5);
const int V(2e4);
vector<pair<int,int>>e[N];
int del[N],siz[N],mxs,sum,root;
int dis[N],d[N],cnt;
long long ans;
int q[V+5];
int judge[V+5];
int n,m,k;
int tr[N<<2];
inline void modify(int p,int l,int r,int id,int w){
	tr[p]+=w;
	if(l==r)
		return;
	if(id<=l+r>>1)modify(p<<1,l,l+r>>1,id,w);
	else modify(p<<1|1,(l+r>>1)+1,r,id,w);
	return;
}
inline int query(int p,int l,int r,int L,int R){
	if(L<=l&&r<=R)
		return tr[p];
	return ((L<=l+r>>1)?query(p<<1,l,l+r>>1,L,R):0)+((R>l+r>>1)?query(p<<1|1,(l+r>>1)+1,r,L,R):0); 
}
inline void getroot(int u,int fa){
	siz[u]=1;
	int s=0;
	for(auto p:e[u]){
		if(_v==fa||del[_v])continue;
		getroot(_v,u);
		siz[u]+=siz[_v];
		s=max(s,siz[_v]);
	}
	s=max(s,sum-siz[u]);
	if(s<mxs)mxs=s,root=u;
}
inline void getdis(int u,int fa){
	dis[++cnt]=d[u];
	for(auto p:e[u]){
		if(_v==fa||del[_v])continue;
		d[_v]=d[u]+_w;
		getdis(_v,u);
	}
}
inline void calc(int u){
	del[u]=1;
	int tp=0;
	for(auto p:e[u]){
		if(del[_v])continue;
		cnt=0;
		d[_v]=_w;
		getdis(_v,u);
		for(int i=1;i<=cnt;i++)
			if(k>=dis[i])
				ans+=query(1,0,V,0,k-dis[i]);
		for(int i=1;i<=cnt;i++)
			if(dis[i]<=V){
				q[++tp]=dis[i];
				modify(1,0,V,dis[i],1);
			}
	}
	for(int i=1;i<=tp;i++)modify(1,0,V,q[i],-1);
}
inline void divide(int u){
	calc(u);
	for(auto p:e[u]){
		if(del[_v])continue;
		mxs=sum=siz[_v];
		getroot(_v,0);
		divide(root);
	}
}
int main(){
//	freopen("c.in","r",stdin);
	scanf("%d",&n);
	for(int i=1,u,v,w;i<n;i++){
		scanf("%d%d%d",&u,&v,&w);
		e[u].emplace_back(v,w);
		e[v].emplace_back(u,w);
	}
	scanf("%d",&k);
	modify(1,0,V,0,1);
	mxs=sum=n;
	getroot(1,0);
	divide(root);
	printf("%lld\n",ans);
	return 0;
} 
2024/7/1 20:23
加载中...