2022春每日一题:Day 38
题目[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;
}
2022春每日一题:Day 38的更多相关文章
- 老男孩IT教育-每日一题汇总
老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第123天 第二十五周 2017年8月25日 出现Swap file….already exists以下错误如何解决? 第122天 2 ...
- 【Java每日一题】20170106
20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170105
20170104问题解析请点击今日问题下方的"[Java每日一题]20170105"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170104
20170103问题解析请点击今日问题下方的"[Java每日一题]20170104"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170103
20161230问题解析请点击今日问题下方的"[Java每日一题]20170103"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20161230
// 20161229问题解析请点击今日问题下方的"[Java每日一题]20161230"查看(问题解析在公众号首发,公众号ID:weknow619)package Dec2016 ...
- 【Java每日一题】20161229
package Dec2016; import java.util.ArrayList; import java.util.List; public class Ques1229 { public s ...
- 【Java每日一题】20161228
package Dec2016; import java.util.ArrayList; import java.util.List; public class Ques1228 { public s ...
- 【Java每日一题】20161227
package Dec2016; public class Ques1227 { public static void main(String[] args){ } { c = 1; } int c ...
- 【Java每日一题】20161226
package Dec2016; public class Ques1226 { static{ num = 1; } public static int num = 2; public static ...
随机推荐
- spark 解决 java.util.Date is not a valid external type for schema of Date
出错伪代码如下: //出错的点在这里 import java.util.Date ... val t_rdd = t_frame.rdd.map(row => { val photo_url = ...
- Dubbo本地调试
dubbo 启动标志 Dubbo service server started <dubbo:reference id="transferTimingUploadHisRPCServi ...
- 强扩展、强一致、高可用…GaussDB成为游戏行业的心头爱
摘要:看GaussDB for Redis强扩展.高可用.强一致.高安全,如何玩转各大游戏场景 本文分享自华为云社区<GaussDB为什么成为游戏行业的心头爱?>,作者: GaussDB ...
- 【问题解决】Debian更新源提示InRelease已过期
问题 本人日常用 Debian10 今天在更新源(apt update) 时,出现InRelease文件过期的问题 E: http://mirrors.163.com/debian/dists/bus ...
- 工程课Linux第一节笔记
上课笔记 文件系统结构 /根目录 /bin/ 存放系统命令,普通用户与root都可以执行 /etc/ 配置文件保存位置 /lib/ 系统调用的函数库保存位置 /var/ 目录用于存储动态数据,例如缓存 ...
- Kibana:在Kibana中对数据进行深入分析 (drilldown)
文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/105193907 在上面,我们需要把之前地址栏中拷贝的内容粘贴过来,并做相应的修改.针 ...
- crictl 命令 - Kubernetes 管理命令详解
描述:crictl 是 CRI 兼容的容器运行时命令行对接客户端, 你可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序.由于该命令是为k8s通过CRI使用containerd ...
- 1_Layui
一. 引言 官网: https://www.layui.com/ 在官网首页, 可以很方便的下载Layui Layui是一款经典模块化前端UI框架, 我们只需要定义简单的HTML,CSS,JS即可实现 ...
- JS 模块化- 04 CMD 规范与 Sea JS
1 CMD 规范介绍 CMD: Common Module Definition, 通用模块定义.与 AMD 规范类似,也是用于浏览器端,异步加载模块,一个文件就是一个模块,当模块使用时才会加载执行. ...
- 文盘Rust -- struct 中的生命周期
最近在用rust 写一个redis的数据校验工具.redis-rs中具备 redis::ConnectionLike trait,借助它可以较好的来抽象校验过程.在开发中,不免要定义struct 中的 ...