zoukankan      html  css  js  c++  java
  • CF739B Alyona and a tree |倍增+差分

    题目描述:

    Alyona有一棵有 nnn 个节点的树。这棵树的根节点是 111。在每个节点里,Alyona写了一个正整数,在节点 iii 她写了正整数 aia_iai​ 。另外,她在这棵树上的每条边上写了一个正整数(不同边上可能有不同的数)。

    让我们定义 dist(v,u)dist(v,u)dist(v,u) 作为从 vvv 到 uuu 的简单路径上的边权和。

    当且仅当 uuu 在 vvv 的子树中并且 dist(v,u)≤audist(v,u)leq a_udist(v,u)≤au​,顶点 vvv 控制顶点 u(v!=u)u(v!=u)u(v!=u) 。

    Alyona想在某些顶点定居。为了做到这件事,她想知道在每个节点 vvv 能控制几个节点。

    输入格式:

    第一行包含一个整数 n(1≤n≤2×105)n (1leq nleq 2 imes 10^5)n(1≤n≤2×105)

    第二行有 nnn 个整数 a1,a2,…,an(1≤ai≤109)a_1,a_2,ldots,a_n(1leq a_ileq 10^9)a1​,a2​,…,an​(1≤ai​≤109) ,作为节点 iii 的数。

    下面的 n−1n-1n−1 行,每行有两个整数。第 iii 行包含整数 pi,wi(1≤pi≤n,1≤wi≤109)p_i,w_i(1leq p_ileq n,1leq w_ileq 10^9)pi​,wi​(1≤pi​≤n,1≤wi​≤109) ,分别为节点 i+1i+1i+1 的在树上的父节点和 pip_ipi​ 和 (i+1)(i+1)(i+1) 的边上的数字。

    数据保证是个树。

    输出格式:

    输出 nnn 个整数,第 iii 个数为节点 iii 能控制的点数。

    倍增+差分

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N=2e5+10;
    #define int long long
    int n,a[N],f[N][21],ans[N],dis[N];
    int Next[2*N],head[N],go[N*2],w[N*2],tot;
    inline void add(int u,int v,int o){
    	Next[++tot]=head[u];head[u]=tot;go[tot]=v;w[tot]=o;
    }
    inline void dfs(int u){
    	for(int i=1;i<=20;i++)
    	f[u][i]=f[f[u][i-1]][i-1];
    	int x=u;
    	for(int i=20;i>=0;i--)
    	if(f[x][i]&&dis[u]-dis[f[x][i]]<=a[u])
    	x=f[x][i];
    	ans[f[x][0]]--;
    	ans[f[u][0]]++;
    	for(int i=head[u];i;i=Next[i]){
    		int v=go[i],d=w[i];
    		f[v][0]=u;
    		dis[v]=dis[u]+d;
    		dfs(v);
    		ans[u]+=ans[v];
    	}
    }
    signed main(){
    	cin>>n;
    	for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
    	for(int i=2,u,d;i<=n;i++){
    		scanf("%lld%lld",&u,&d);
    		add(u,i,d);
    	}
    	dfs(1);
    	for(int i=1;i<=n;i++)printf("%lld ",ans[i]);
    }
    
  • 相关阅读:
    js键盘事件
    jq 插件写法
    js 去除字符串空白符
    C# ExpandoObject用法
    C# dynamic与var的区别
    c# 可选参数与命名实参
    C# 扩展方法
    python运算符
    【HDOJ】3006 The Number of set
    【HDOJ】3205 Factorization
  • 原文地址:https://www.cnblogs.com/naruto-mzx/p/11751881.html
Copyright © 2011-2022 走看看