首页 > 其他分享 >P3605 [USACO17JAN]Promotion Counting P

P3605 [USACO17JAN]Promotion Counting P

时间:2023-03-15 13:14:32浏览次数:40  
标签:bin int res len USACO17JAN add Promotion Counting hd

求  某节点子树内比该节点的点权大的点的个数

 

值域上维护树状数组,

#include <bits/stdc++.h>
using namespace std ;
 const int N=1e5+2,M=N*2;
 int bin[N],len;
 int sum[N] ,n,ans[N],a[N]; 
 
 int nxt[M],go[M],hd[N],all;
 
 void add_(int x,int y){
 	go[++all]=y,nxt[all]=hd[x];
	hd[x]=all;
 }
 int lowbit(int x){
 	return x&-x;
 } 
 int qq(int x){
 	int res= 0;
 	for(;x;x-=lowbit(x)) res+=sum[x];
 	return res; 
 }
 void add(int x,int v){
 	for(;x<=n;x+=lowbit(x)) sum[x]+=v ;
 }
 void dfs(int x){
 	ans[x]-= qq(n)-qq(a[x]);
 	
 	for(int i=hd[x];i;i=nxt[i]){
 		int y=go[i]; 
 		dfs(y);
 	}
 	
 	ans[x]+= qq(n)-qq(a[x]); 
 	add(a[x],1);
 }
 signed main(){ 
 	int i,x;
 	cin>>n;
 	for(i=1;i<=n;i++) cin>>a[i],bin[++len]=a[i];
 	sort(bin+1,bin+1+len);
 	len=unique(bin+1,bin+1+len)-bin-1;
 	for(i=1;i<=n;i++) 
 		a[i]=lower_bound(bin+1,bin+1+len,a[i])-bin;
 	
 	for(i=2;i<=n;i++) cin>>x,add_(x,i);
	dfs(1);
	for(i=1;i<=n;i++) cout<<ans[i]<<endl;
 }
 
 

 

标签:bin,int,res,len,USACO17JAN,add,Promotion,Counting,hd
From: https://www.cnblogs.com/towboa/p/17218105.html

相关文章

  • [atABC288Ex]A Nameless Counting Problem
    记\(f(n,m,x)\)为满足\(\begin{cases}a_{i}\in[0,m)\\\bigoplus_{i=1}^{n}a_{i}=x\\\foralli\nej,a_{i}\nea_{j}\end{cases}\)的序列\(\{a_{n}\}\)数,则答案即\(\sum_{0......
  • PAT 甲级 1004 Counting Leaves(30)
    Afamilyhierarchyisusuallypresentedbyapedigreetree.Yourjobistocountthosefamilymemberswhohavenochild.InputSpecification:Eachinputfilec......
  • [SPOJ] DIVCNT2 - Counting Divisors (square) (平方的约数个数前缀和 容斥 卡常)
    题目vjudgeURL:​​CountingDivisors(square)​​​Letbethenumberofpositivedivisorsof.Forexample,,and.LetGiven,find.InputFirstlinecontains......
  • QOJ #4812. Counting Sequence
    题面传送门首先显然有一个\(O(n^2)\)的dp:设\(f_{i,j}\)表示当前总和为\(i\),结尾是\(j\)的方案数,转移是平凡的。因为相邻两项差只有\(1\),因此所有\(a_i\)和\(a......
  • docplex.mp.utils.DOcplexLimitsExceeded: **** Promotional version. Problem size l
    这是因为python里直接下载的Cplex是免费的并且有限制,只能求解小规模的问题。需要用cplex学术版,才能求解更大规模的问题。注意python版本与cplex版本之间的对应。安装学......
  • 【UVA1485】Permutation Counting
    典中典题。由于\(0\lek\len\le1000\),能猜到做法大概是\(n^2\)的动态规划,接下来写方程。以排列长度划分阶段,该长度下\(E\)值划分子问题,容易想到定义\(f[i][j]\)......
  • 计数排序(Counting Sort)
    一、算法概述1.1算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排......
  • POJ--2386 Lake Counting(DFS)
    记录0:332023-1-24http://poj.org/problem?id=3617reference:《挑战程序设计竞赛(第2版)》2.2.3p43DescriptionFJisabouttotakehisN(1≤N≤2,000)cows......
  • 2022,Feature Evaluation for Underwater Acoustic Object Counting and F0 Estimatio
    paperAbstract在执行水声目标检测任务时,需要对目标数N进行计数,当N大于1时进行声源分离,并从分离出的噪声中提取每个目标的运动参数(如轴频或FO)。尽管深度学习方法在图像......
  • ZROJ370 Medium Counting - 区间dp -
    题目链接:http://zhengruioi.com/problem/370题解:考虑对于\(S[l..r]\),如果要符合条件必然是在最高位分成了至少两段(也可能没有分出来,那就继续下一位)\(S[l..k]和S[k+1......