树状数组 || JZOI 1024. @szefany 的树
题面:无
题解:无
代码:
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- const int maxn=(1e5)+;
- int N,T,u,v,num_edge,edge_head[maxn],lsh_cnt,belong[maxn],tr[maxn],Ans[maxn];
- //记住树状数组里不可以塞0
- //tr中的数会在回溯时删掉,所以不用清空tr
- struct Edge{int to,nx;}edge[maxn<<];
- inline void Add_edge(int from,int to){
- edge[++num_edge].nx=edge_head[from];
- edge[num_edge].to=to;
- edge_head[from]=num_edge;
- return;
- }
- struct Nd{int yw,w,id;}nd[maxn];
- inline bool cmp(const Nd&a,const Nd&b){return a.yw<b.yw;}
- inline void Add(int s,int x){
- for(int i=s;i>;i-=i&(-i))tr[i]+=x;
- return;
- }
- inline int Find(int s){
- int ans=;
- for(int i=s;i<=lsh_cnt;i+=i&(-i))ans+=tr[i];
- return ans;
- }
- inline void Dfs(int x,int f){
- for(int i=edge_head[x];i;i=edge[i].nx){
- int y=edge[i].to;
- if(y!=f){
- Add(nd[belong[x]].w,);
- Dfs(y,x);
- Add(nd[belong[x]].w,-);
- }
- }
- Ans[x]=Find(nd[belong[x]].w+);
- return;
- }
- int main(){
- scanf("%d",&T);
- while(T--){
- num_edge=lsh_cnt=;
- memset(edge_head,,sizeof(edge_head));
- scanf("%d",&N);
- for(int i=;i<N;i++){
- scanf("%d%d",&u,&v);
- Add_edge(u,v);
- Add_edge(v,u);
- }
- for(int i=;i<=N;i++){
- scanf("%d",&nd[i].yw);
- nd[i].id=i;
- }
- sort(nd+,nd+N+,cmp);
- nd[].w=++lsh_cnt;
- belong[nd[].id]=;
- for(int i=;i<=N;i++){
- if(nd[i].yw!=nd[i-].yw)lsh_cnt++;
- nd[i].w=lsh_cnt;
- belong[nd[i].id]=i;
- }
- Dfs(,);
- for(int i=;i<=N;i++)printf("%d\n",Ans[i]);
- }
- return ;
- }
By:AlenaNuna
树状数组 || JZOI 1024. @szefany 的树的更多相关文章
- 「ZJOI2017」树状数组(二维线段树)
「ZJOI2017」树状数组(二维线段树) 吉老师的题目真是难想... 代码中求的是 \(\sum_{i=l-1}^{r-1}a_i\),而实际求的是 \(\sum_{i=l}^{r}a_i\),所以 ...
- BZOJ2141排队——树状数组套权值线段树(带修改的主席树)
题目描述 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家 乐和和.红星幼儿园的小朋友们排起了长长地队伍,准备吃果果.不过因为小朋友们的身高有所区别 ...
- luogu3380/bzoj3196 二逼平衡树 (树状数组套权值线段树)
带修改区间K大值 这题有很多做法,我的做法是树状数组套权值线段树,修改查询的时候都是按着树状数组的规则找出那log(n)个线段树根,然后一起往下做 时空都是$O(nlog^2n)$的(如果离散化了的话 ...
- CF1093E Intersection of Permutations 树状数组套权值线段树
\(\color{#0066ff}{ 题目描述 }\) 给定整数 \(n\) 和两个 \(1,\dots,n\) 的排列 \(a,b\). \(m\) 个操作,操作有两种: \(1\ l_a\ r_a ...
- Dynamic Rankings(树状数组套权值线段树)
Dynamic Rankings(树状数组套权值线段树) 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[ ...
- [BZOJ 3295] [luogu 3157] [CQOI2011]动态逆序对(树状数组套权值线段树)
[BZOJ 3295] [luogu 3157] [CQOI2011] 动态逆序对 (树状数组套权值线段树) 题面 给出一个长度为n的排列,每次操作删除一个数,求每次操作前排列逆序对的个数 分析 每次 ...
- 【树状数组套权值线段树】bzoj1901 Zju2112 Dynamic Rankings
谁再管这玩意叫树状数组套主席树我跟谁急 明明就是树状数组的每个结点维护一棵动态开结点的权值线段树而已 好吧,其实只有一个指针,指向该结点的权值线段树的当前结点 每次查询之前,要让指针指向根结点 不同结 ...
- 【树状数组(二叉索引树)】轻院热身—candy、NYOJ-116士兵杀敌(二)
[概念] 转载连接:树状数组 讲的挺好. 这两题非常的相似,查询区间的累加和.更新结点.Add(x,d) 与 Query(L,R) 的操作 [题目链接:candy] 唉,也是现在才发现这题用了这个知识 ...
- LightOJ 1085(树状数组+离散化+DP,线段树)
All Possible Increasing Subsequences Time Limit:3000MS Memory Limit:65536KB 64bit IO Format: ...
随机推荐
- thinkphp 5.6以上版本出现No input file specified解决办法
打开thinkphp,出现No input file specified. 解决方法:在工程下的.htaccess文件里, 把RewriteRule ^(.*)$ index.php/$1 [QSA, ...
- sql server 2008怎样导入mdf,ldf文件,怎样解决导入mdf,ldf文件时出现附加数据库错误的问题
废话不多说,直入主题吧. 1:打开sql server 2008,右键数据库-->附加 2:这时出现这个界面点击添加 3:打开数据库实例的安装目录,打开DATA文件夹;(如我的实例目录地址为:D ...
- babel
一款可以将 ES6 代码转换为 ES5 代码的转译器. 官网:http://babeljs.io/ 中文:https://www.babeljs.cn/
- Vue导出json数据到Excel表格
一.安装依赖 npm install file-saver --save npm install xlsx --save npm install script-loader --save-dev 二. ...
- P5290 [十二省联考2019]春节十二响
题目地址:P5290 [十二省联考2019]春节十二响 骗分方法 如果你实在一点思路也没有,暴力都不会打,那么请考虑一下骗分. 方法一 输出所有 \(M\) 的和. 期望得分:0分. 实际还有5分 方 ...
- Web从入门到放弃<5>
<1> CSS_DOM 1,structural layer 2,presentation layer 3,behavior layer style也是一个属性 <!DOCTYPE ...
- how2heap学习笔记
github源代码地址 这里只分析glibc2.25堆分配的特性,为了方便调试编译时使用 gcc -g -no-pie <input_file_name> -o <output_fi ...
- SSH总结
远程服务介绍说明 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输.确保了数据传输安全.那SSH服务主要功能有哪些呢?1.提供远程连接服务器的服务2.对传输的数据进 ...
- 解决Linux(Loaded plugins: fastestmirror Please use /usr/bin/yum --help)
大概意思是fastestmirror不能使用,fastestmirror是yum的一个加速插件 处理办法就是禁用这个插件 方法两种 第一种 vi /etc/yum/pluginconf.d/faste ...
- java基础学习总结——面向对象1
目录 一.面向过程的思想和面向对象的思想 二.简单理解面向对象 三.面向对象的设计思想 四.对象和类的概念 五.如何抽象出一个类? 六.类(对象)之间的关系 七.Java与面向对象 八.为什么使用面向 ...