题目[USACO17JAN]Promotion Counting P

从根节点dfs一遍,树状数组维护进入和出去时这个节点的贡献,一减就是答案

代码:

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <vector>
#define lowbit(x) x&-x
const int N=1e5+5;
using namespace std;
struct pos
{
int v,id;
pos(int vv,int ii)
{
v=vv;id=ii;
}
pos(){
}
friend bool operator < (pos a,pos b)
{
return a.v<b.v;
}
}nums[N];
int n,a[N],fs[N],fe[N],tot;
vector <int> g[N];
namespace fenwick
{
struct fw
{
int c;
}e[N];
void modify(int x,int v)
{
for(int i=x;i<=n;i+=lowbit(i))
e[i].c+=v;
}
int query(int x)
{
int ret=0;
for(int i=x;i;i-=lowbit(i))
ret+=e[i].c;
return ret;
}
}
using namespace fenwick;
void dfs(int u,int fa)
{
++tot;
modify(a[u],1);
fs[u]=tot-query(a[u]);
for(int i=0;i<g[u].size();i++)
{
int k=g[u][i];
if(k==fa)
continue;
dfs(k,u);
}
fe[u]=tot-query(a[u]);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int v;
scanf("%d",&v);
nums[i]=pos(v,i);
}
for(int i=2;i<=n;i++)
{
int v;
scanf("%d",&v);
g[v].push_back(i);
g[i].push_back(v);
}
sort(nums+1,nums+1+n);
int last=-1,now=1;
for(int i=1;i<=n;i++)
{
if(last!=nums[i].v)
last=nums[i].v,now=i;
a[nums[i].id]=now;
}
dfs(1,0);
for(int i=1;i<=n;i++)
printf("%d\n",fe[i]-fs[i]);
return 0;
}

最新文章

  1. Vijos1046观光旅游[floyd 最小环]
  2. 2016年12月21日 星期三 --出埃及记 Exodus 21:16
  3. 大众点评试题分析(C/C++)
  4. Solr 5.x集成中文分词word,mmseg4j
  5. 超炫的3D HTML源代码
  6. 关于fseek和文件&quot;ab+&quot;打开方式的问题
  7. servlet 容器,工作原理,优缺点
  8. DZ升级到X3.2后,UCenter用户管理中心进不了了
  9. Google Code项目代码托管网站上Git版本控制系统使用简明教程
  10. 阿里云OS和Android的关系(本文转载月光博客)
  11. line-height 行高
  12. yum仓库
  13. Json常用代码
  14. PHP中关于PDO数据访问抽象层的功能操作
  15. Redis设置内存最大占用值
  16. Vim 命令、操作、快捷键
  17. ERP出库审核业务(四十四)
  18. laravel 数据库 - 增删查改
  19. vim/sed/awk/grep等文件批处理总结
  20. #C语言初学记录(位运算)

热门文章

  1. 关于使用docker volume挂载的注意事项
  2. SpringBoot使用自定义注解+AOP+Redis实现接口限流
  3. Docker 完整版教程
  4. PAT (Basic Level) Practice (中文)1015 德才论 分数 25
  5. C#-01 关于C#中传入参数的一些用法
  6. Python(二)常用的正则表达式
  7. 关于aws-Global区的新账户的一些限制坑点
  8. 关于vmware虚拟机的ova/ovf转换成aws上的AMI镜像
  9. 【nginx】使用 nginx 时,使用 sub_filter 注入 js 代码,例如 google analysis 等
  10. PHP Phar反序列化学习