线段树合并都是蓝题了嘛 我可能和时代脱轨了emm...

直接离散化然后合并就好啦w

生病了真难受QAQ

//Love and Freedom.
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
#define inf 20021225
#define mxn 100010
using namespace std;struct node
{int ls,rs,sum;
}t[mxn*40];
int cnt,rt[mxn],ans[mxn];
struct edge
{int to,lt;
}e[mxn];
int val[mxn],in[mxn],ecnt;
int p[mxn],dd[mxn],n;void add(int x,int y)
{e[++ecnt].to=y;e[ecnt].lt=in[x];in[x]=ecnt;
}void pushup(int x)
{t[x].sum = t[t[x].ls].sum+t[t[x].rs].sum;
}int merge(int x,int y,int l,int r)
{if(!x||!y) return x+y;if(l==r){t[x].sum+=t[y].sum;return x;}int mid = (l+r)>>1;t[x].ls=merge(t[x].ls,t[y].ls,l,mid);t[x].rs=merge(t[x].rs,t[y].rs,mid+1,r);pushup(x);  return x;
}void insert(int &x,int l,int r,int d)
{if(!x) x=++cnt; t[x].sum++;if(l==r) return;int mid=(l+r)>>1;if(d<=mid)  insert(t[x].ls,l,mid,d);else    insert(t[x].rs,mid+1,r,d);pushup(x);
}int query(int x,int l,int r,int d)
{if(!x) return 0;if(l==r) return t[x].sum;int mid=(l+r)>>1;if(d<=mid) return query(t[x].ls,l,mid,d)+t[t[x].rs].sum;else  return query(t[x].rs,mid+1,r,d);
}
bool cmp(int x,int y)
{return val[x]<val[y];
}
void dfs(int x)
{for(int i=in[x];i;i=e[i].lt)dfs(e[i].to);insert(rt[x],1,n+1,p[x]);// int tmp = ;for(int i=in[x];i;i=e[i].lt)rt[x]=merge(rt[x],rt[e[i].to],1,n+1);ans[x] = query(rt[x],1,n+1,p[x]+1);
}
int main()
{int f;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&val[i]),dd[i]=i;sort(dd+1,dd+n+1,cmp);for(int i=1;i<=n;i++)    p[dd[i]]=i;for(int i=2;i<=n;i++){scanf("%d",&f);add(f,i);}dfs(1);for(int i=1;i<=n;i++) printf("%d\n",ans[i]);return 0;
}

转载于:https://www.cnblogs.com/hanyuweining/p/10321877.html

洛谷3605 Promotion Counting相关推荐

  1. 洛谷 P3184 [USACO16DEC]Counting Haybales数草垛

    洛谷 P3184 [USACO16DEC]Counting Haybales数草垛 题目描述 Farmer John has just arranged his NN haybales (1 \leq ...

  2. 深搜+广搜——Lake Counting S(洛谷 P1596)

    题目选自洛谷P1596 这道题目我觉得是比较综合的搜索题了,可以用dfs.bfs来解题.下面给出2种方法的思路: 首先,确定什么情况是一个水坑: 对于每一个'w' ,如果在八个方向上有于其相邻的'w' ...

  3. 2021寒假——洛谷刷题计划(35题)

    (希望大家不要Copy) AC:Accept,程序通过. CE:Compile Error,编译错误. PC:Partially Correct,部分正确. WA:Wrong Answer,答案错误. ...

  4. 【数学1】基础数学问题 - 题单 - 洛谷

    这里写目录标题 [[数学1]基础数学问题 - 题单 - 洛谷](https://www.luogu.com.cn/training/117) [P1143 进制转换](https://www.luog ...

  5. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  6. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  7. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  8. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

  9. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

最新文章

  1. C指针原理(1)-ATT汇编
  2. ie8 ajaxSubmit 上传文件提示下载
  3. 虚拟仿真引擎消息机制
  4. Java SE (5)之 线程使用
  5. 优雅编程之这样编写代码,你就“正常”了(十五)
  6. java和javaw进程_java和 javaw 及 javaws的区别解析
  7. safari 插件安装之alipay
  8. windows装机硬盘超过2T问题
  9. [springboot 开发单体web shop] 1. 前言介绍和环境搭建
  10. win time 修复服务器,Windows time 1058错误 修复
  11. AT32 EMAC MQTT Client
  12. 基于DDD的现代ASP.NET开发框架--ABP系列之2、ABP入门教程
  13. 项目分享-限流框架的实现
  14. 工作6年多的码农ios职位面试总结(续)
  15. UHD-SDI GT v2.0(PG380)
  16. perl C/C++ 扩展(五)
  17. RobotFramework操作xlsx表格
  18. 使用阿里云ECS绑定弹性公网IP搭建反向代理服务器
  19. c# Fanuc发那科 法兰克 数据采集 提供源码 支持程序上传下载 Fanuc 免授权数据采集
  20. spring tool suit4

热门文章

  1. boost::math::chi_squared用法的测试程序
  2. boost::hana::overload用法的测试程序
  3. Boost::Flyweight 基本示例
  4. Boost:parallel grep测试程序
  5. ITK:计算图像谱密度
  6. C语言编写带参数的宏编在三个数找最大数
  7. VTK:可视化之PointDataSubdivision
  8. VTK:Rendering之TransparentBackground
  9. VTK:PolyData之ExtractCellsUsingPoints
  10. OpenCV图像操作