zoukankan      html  css  js  c++  java
  • [cf375D]Tree and Queries

    Description

    给定一棵树,每个节点有颜色。t个询问,求以v为根的子树中有多少种颜色满足该颜色的节点个数>k。

    Solution

    dfs序+莫队。

    #include<bits/stdc++.h>
    using namespace std;
    
    const int N=100005;
    struct graph{
    	int nxt,to;
    }e[N<<1];
    struct query{
    	int l,r,k,n;
    }q[N];
    int fro[N],beh[N],num[N];//dfs序 
    int f[N],s[N],tmp[N];//莫队 tmp[i]:s[x]>=i的x的个数
    int g[N],c[N],ans[N],n,m,t,cnt;
    void adde(int x,int y){
    	e[++cnt].nxt=g[x];g[x]=cnt;e[cnt].to=y;
    }
    void dfs(int u){
    	fro[u]=++cnt;num[cnt]=u;
    	for(int i=g[u];i;i=e[i].nxt)
    		if(!fro[e[i].to]){
    			dfs(e[i].to);
    		}
    	beh[u]=cnt;
    }
    bool cmp(query a,query b){
    	if(f[a.l]!=f[b.l]) return f[a.l]<f[b.l];
    	return a.r<b.r;
    }
    void add(int i){
    	++s[c[num[i]]];
    	++tmp[s[c[num[i]]]];
    }
    void remove(int i){
    	--tmp[s[c[num[i]]]];
    	--s[c[num[i]]];
    }
    int main(){
    //	freopen("1.in","r",stdin);
    //	freopen("1.out","w",stdout);
    	scanf("%d%d",&n,&t);
    	for(int i=1;i<=n;++i)
    		scanf("%d",&c[i]);
    	for(int i=1,x,y;i<n;++i){
    		scanf("%d%d",&x,&y);
    		adde(x,y);adde(y,x); 
    	}
    	cnt=0;dfs(1);
    	
    	for(int i=1,v;i<=t;++i){
    		scanf("%d%d",&v,&q[i].k);
    		q[i].l=fro[v];q[i].r=beh[v];q[i].n=i;
    	}
    	m=sqrt(n);
    	for(int i=1,k=1;i<=n;++k)
    		for(int j=1;i<=n&&j<=m;++i,++j)
    			f[i]=k;
    	
    	sort(q+1,q+1+t,cmp);
    	int l=1,r=1;
    	++s[c[num[1]]];++tmp[1];
    	for(int i=1;i<=t;++i){
    		while(r<q[i].r){
    			++r;add(r);
    		}
    		while(r>q[i].r){
    			remove(r);--r;
    		}
    		while(l>q[i].l){
    			--l;add(l);
    		}
    		while(l<q[i].l){
    			remove(l);++l;
    		}
    		ans[q[i].n]=tmp[q[i].k];
    	}
    	for(int i=1;i<=t;++i)
    		printf("%d\n",ans[i]);
    	return 0;
    }
    
  • 相关阅读:
    html Table实现表头固定
    Asp.net ORA-12154: TNS: 无法解析指定的连接标识符
    VS加载项目时报错 尚未配置为Web项目XXXX指定的本地IIS
    Sqlserver 导出insert插入语句
    RRAS
    MVC实例应用模式
    MVC概述
    23种设计模式
    XXX系统质量属性
    大型网站架构读后感
  • 原文地址:https://www.cnblogs.com/AireenYe/p/15773386.html
Copyright © 2011-2022 走看看