思路还是挺好玩的

首先简单粗暴的想法是dfs然后用离散化权值树状数组维护,但是这样有个问题就是这个全局的权值树状数组里并不一定都是当前点子树里的

第一反应是改树状数组,但是显然不太现实,但是可以这样想,就是现在统计子树之前把查到的答案减去,然后再查子树最后加上查到的答案,这样相当于去重了

方便起见,离散化的时候按从大到小的顺序,这样就变成了求比当前点小的点

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
const int N=100005;
int n,a[N],g[N],h[N],cnt,c[N],ans[N];
map<int,int>mp;
struct qwe
{
int ne,to;
}e[N<<1];
bool cmp(const int &a,const int &b)
{
return a>b;
}
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
void add(int u,int v)
{
cnt++;
e[cnt].ne=h[u];
e[cnt].to=v;
h[u]=cnt;
}
void ins(int x)
{
for(int i=x;i<=n;i+=(i&(-i)))
c[i]++;
}
int ques(int x)
{
int r=0;
for(int i=x;i>=1;i-=(i&(-i)))
r+=c[i];
return r;
}
void dfs(int u)
{
ans[u]-=ques(a[u]);
for(int i=h[u];i;i=e[i].ne)
dfs(e[i].to);
ans[u]+=ques(a[u]);
ins(a[u]);
}
int main()
{
n=read();
for(int i=1;i<=n;i++)
a[i]=g[i]=read();
for(int i=2;i<=n;i++)
{
int x=read();
add(x,i);
}
sort(g+1,g+1+n,cmp);
for(int i=1;i<=n;i++)
mp[g[i]]=i;
for(int i=1;i<=n;i++)
a[i]=mp[a[i]];
dfs(1);
for(int i=1;i<=n;i++)
printf("%d\n",ans[i]);
return 0;
}

最新文章

  1. C语言 独木舟问题
  2. sqlserver锁表、解锁、查看销表 (转载)
  3. springmvc+spring-security+mybatis +redis +solar框架抽取
  4. 智慧城市的【Auth】登录对象
  5. [前端_EasyUI]给easyui的datebox设置默认值,获取不到 的解决方法
  6. 用JQUERY的deferred异步按顺序调用后端API
  7. Hadoop shuffle与排序
  8. 蓝桥杯—盾神与条状项链(C++实现)
  9. [转] MMO即时战斗:地图角色同步管理和防作弊实现
  10. 将ADS1.2的工程迁移到KEIL上-基于2440
  11. [js高手之路] html5 canvas系列教程 - 像素操作(反色,黑白,亮度,复古,蒙版,透明)
  12. ubuntu18.04 &amp; Windows10 双系统关机缓慢
  13. 使用K-means进行聚类,用calinski_harabaz_score评价聚类效果
  14. Python3 与 NetCore 基础语法对比(就当Python和C#基础的普及吧)
  15. Mac os fatal error: &#39;numpy/arrayobject.h&#39; file not found
  16. shell中的逻辑判断while
  17. IPC相关的命令
  18. Android——Fragment过度动画分析一(转)
  19. [CTSC2018]假面
  20. 为什么说git比svn好

热门文章

  1. window.onload 函数不执行处理
  2. 关于OPENSSL的EVP函数的使用
  3. 鳥哥的 Linux 私房菜
  4. [luoguP1328] 生活大爆炸版石头剪刀布(模拟)
  5. POJ 1741 Tree【Tree,点分治】
  6. PowerDesigner物理模型用法总结
  7. 安装eclipse插件,很慢终于找到了解决的方法
  8. Visual C++ 网络编程 笔记
  9. 又见古老的Typosquatting攻击:这次入侵Npm窃取开发者身份凭证
  10. 【CV论文阅读】Image Captioning 总结