题目描述

输入

输出

样例输入

5 4
1 2
1 3
3 4
3 5
1 4
2 4
1 2
2 5

样例输出

3
1
1
2

数据范围

样例解释

解法

可推知原树可以转换为一个序列,即优先序列
一个01序列,当要往其中加入元素时,给第一个0加1即可。


操作1

等价于所谓优先序列加入元素。
实现:
二分第一个0的位置index;
使用数据结构得出[1,index]的和sum,如果index−sum>0,则index合法。

操作2

利用倍增得出最近的连续的有值祖先v,给v-1即可。


时间复杂度为O(nlogn2)。

代码

#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#define ll long long
#define ln(x,y) int(log(x)/log(y))
#define sqr(x) ((x)*(x))
using namespace std;
const char* fin="aP3.in";
const char* fout="aP3.out";
const int inf=0x7fffffff;
const int maxn=100007,maxm=maxn*2,maxk=20;
int n,m,i,j,k,tot,ans;
int fi[maxm],la[maxm],ne[maxm];
int a[maxn],de[maxn],fa[maxn][maxk];
int b[maxn],c[maxn],dfn[maxn],st[maxn],en[maxn];
int ta[maxn];
void change(int v,int v1){for (;v<=n;v+=v&-v) ta[v]+=v1;
}
int presum(int v){int v1=0;for (;v;v-=v&-v) v1+=ta[v];return v1;
}
int getsum(int l,int r){return presum(r)-presum(l-1);
}
void add_line(int a,int b){tot++;ne[tot]=fi[a];la[tot]=b;fi[a]=tot;
}
void build(int v,int from){int i,j,k;fa[v][0]=from;de[v]=de[from]+1;for (i=1,j=ln(de[v],2);i<=j;i++){k=fa[v][i-1];fa[v][i]=fa[k][i-1];}st[v]=b[0];for (k=fi[v];k;k=ne[k])if (la[k]!=from) b[++b[0]]=la[k];en[v]=b[0];if (en[v]-st[v]) sort(b+st[v]+1,b+en[v]+1);for (i=st[v]+1;i<=en[v];i++) build(b[i],v);c[++c[0]]=v;dfn[v]=c[0];
}
int add(){int l=1,r=n,mid;while (l<r){mid=(l+r)/2;if (mid-presum(mid)) r=mid;else l=mid+1;}a[c[l]]=1;change(l,1);return c[l];
}
int del(int v){int i,j,k=v;if (a[k]==0) return 0;for (i=ln(de[v],2);i>=0;i--){if (a[fa[k][i]]) k=fa[k][i];}if (a[fa[k][0]]) k=fa[k][0];a[k]=0;change(dfn[k],-1);return de[v]-de[k];
}
int main(){scanf("%d%d",&n,&m);for (i=1;i<n;i++){scanf("%d%d",&j,&k);add_line(j,k);add_line(k,j);}build(1,0);for (i=1;i<=m;i++){scanf("%d%d",&j,&k);if (j==1){for (;k;k--) ans=add();}else{ans=del(k);}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/hiweibolu/p/6714878.html

【JZOJ4811】【NOIP2016提高A组五校联考1】排队相关推荐

  1. 【JZOJ4817】【NOIP2016提高A组五校联考4】square

    题目描述 输入 输出 样例输入 3 4 1 1 0 1 0 1 1 0 0 1 1 0 5 1 1 2 3 2 1 3 2 3 2 3 4 1 1 3 4 1 2 3 4 样例输出 1 1 1 2 2 ...

  2. 【NOIP2016提高A组五校联考2】running

    题目 小胡同学是个热爱运动的好孩子. 每天晚上,小胡都会去操场上跑步,学校的操场可以看成一个由n个格子排成的一个环形,格子按照顺时针顺序从0 到n- 1 标号. 小胡观察到有m 个同学在跑步,最开始每 ...

  3. JZOJ4808. 【NOIP2016提高A组五校联考3】书稿

    Description W*H ≤ 2500000 , N,Q ≤ 200000 Solution 不难发现一滴墨水的影响范围是一个正方形 最中间的X是a,之后每往外一层就减b,知道a%b 先将a%b ...

  4. jzoj4230. 【五校联考4day1】淬炼神体(B组——Day3)

    jzoj4230. [五校联考4day1]淬炼神体 题目 Description 王仙女将你提供的答案填在<葵花宝典>上,突然,宝典发出耀眼的白光,一股强大的吸力瞬间将仙女吸入宝典中. 一 ...

  5. 湖南长郡2021高考成绩查询时间,2021年湖南新高考六校、长郡十五校联考时间公布...

    2021年湖南新高考六校.长郡十五校联考时间公布 导读:距离2021年高考时间仅剩不到一百天,各个省份都的高三学子都进入紧张阶段.开始了各种模拟考试.2021届湖南省炎德英才大联考的考试时间也已经公布 ...

  6. 4246. 【五校联考6day2】san (Standard IO)

    4246. [五校联考6day2]san (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits D ...

  7. JZOJ Day4 B组 T3【五校联考1day1】我才不是萝莉控呢

    题目大意: 小YYY:"小RRR 你是萝莉控吗."小RRR:"-" 为了避免这个尴尬的话题,小RRR 决定给小YYY 做一道题. 有一个长度为nnn 的正整数数 ...

  8. 【五校联考1day1】我才不是萝莉控呢

    Description 小Y:"小R 你是萝莉控吗."小R:"-" 为了避免这个尴尬的话题,小R 决定给小Y 做一道题. 有一个长度为n 的正整数数组A,满足A ...

  9. [jzoj4210] 【五校联考1day1】我才不是萝莉控呢 {哈夫曼树}

    题目 Description 小Y:"小R 你是萝莉控吗."小R:"-" 为了避免这个尴尬的话题,小R 决定给小Y 做一道题. 有一个长度为n 的正整数数组A, ...

最新文章

  1. 得到的旋转向量和平移向量转换成旋转矩阵 (SE(3))
  2. 使用php读写mysql数据库并显示到网页上
  3. 给定数字的全部组合实现方式
  4. 函数域中申请堆空间出函数后不会自动释放
  5. [luoguP4142]洞穴遇险
  6. 前端传递数据超过2M不能传给后台
  7. 详解 Solidity 事件Event
  8. R 学习笔记《五》 R语言初学者指南--第二章总结
  9. php ezsql,ezSQL PHP数据库操作类库
  10. 详解对密码执行散列和 salt 运算方法
  11. NOIP2013TGDay1
  12. c语言程序32位,turbo c语言下载
  13. TPS63020-电池升降压芯片及静态电流7~8mA原因
  14. 洛谷——P1375 小猫
  15. 笔记:常见TCP端口号
  16. 可并堆——左偏树 Leftist Heap
  17. NDIS Filter Drivers指南
  18. 雅可比矩阵和行列式(Jacobian)
  19. 位运算—统计文本文件中汉字的个数
  20. HBuilder的安装及用法

热门文章

  1. 2021 年最佳 JavaScript 框架
  2. 初探mysql innodb集群_MySQL InnoDB Cluster搭建
  3. mvc html.radiobutton 选中,asp.net-mvc - 如何使用RadioButtonFor选择单选按钮中的任何一个并包含if else语句 - 堆栈内存溢出...
  4. kafka zookeeper java_简单搭建kafka + zookeeper,附简单Java生产和消费客户端
  5. linux kde中文输入法,linux 下的中文输入法是不是只能在KDE下啊?Gnome下有吗?名字?怎么装?...
  6. Spring中事务使用
  7. Python风格总结:列表List
  8. 黄聪:微信网页扫码登录的实现
  9. Coursera机器学习编程作业Python实现(Andrew Ng)—— 2.1 Logistic Regression
  10. Linux之特殊的环境变量IFS以及如何删除带有空格的目录