[Baltic2013]ballmachine BZOJ3133】的更多相关文章

分析: 我们考虑,因为每次放置的时候,都是向子树中含有的编号最小的哪一个走,那么放置的顺序是固定的,我们将边以to的子树最小排序,之后得到的出栈序就是球的放入顺序.目测可以使用堆来实现,线段树也能实现,链表和并查集不能实现. 每次放球可以暴力的放入,因为满足实际不可以放入超过n个球. 每次取走的球可以通过倍增来找到,因为满足球是连续的. 附上代码: #include <cstdio> #include <algorithm> #include <cstdlib> #in…
[BZOJ3133] [Baltic2013]ballmachine(树上倍增+堆) 题面 有一个装球机器,构造可以看作是一棵树.有下面两种操作: 从根放入一个球,只要下方有空位,球会沿着树滚下.如果同时有多个点可以走,那么会选择编号最小的节点所在路径的方向.比如依次在树根4放2个球,第一个球会落到1,第二个会落到3: 从某个位置拿走一个球,那么它上方的球会落下来.比如依次拿走5, 7, 8三个球: 分析 我们可以预处理出从根节点放第i个球时,球到达的位置x.因此,对于每个节点x,我们记录放第几…
3133: [Baltic2013]ballmachine Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 148  Solved: 66 Description 有一个装球机器,构造可以看作是一棵树.有下面两种操作: 从根放入一个球,只要下方有空位,球会沿着树滚下.如果同时有多个点可以走,那么会选择编号最小的节点所在路径的方向.比如依次在树根4放2个球,第一个球会落到1,第二个会落到3: 从某个位置拿走一个球,那么它上方的球会落下来.比如依次拿走…
题目描述 https://www.lydsy.com/JudgeOnline/problem.php?id=3133 题解 还是分两个操作来说吧. 先看第一个操作,放球,可以发现,对于祖先节点和后代节点来说,后代节点没有放球,祖先节点就不能放,对于兄弟节点来说,子树编号小的没放满,编号大的就不能放,可以发现这是树的后序遍历. 用堆维护这个顺序,依次放就好了. 第二问更简单,就是找到最靠上的有球的祖先,把那个位置拿走就好了. 代码 #include<iostream> #include<c…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
题目描述 有一个装球机器,构造可以看作是一棵树.有下面两种操作: 从根放入一个球,只要下方有空位,球会沿着树滚下.如果同时有多个点可以走,那么会选择编号最小的节点所在路径的方向.比如依次在树根4放2个球,第一个球会落到1,第二个会落到3: 从某个位置拿走一个球,那么它上方的球会落下来.比如依次拿走5, 7, 8三个球: 输入 第一行:球的个数N,操作个数Q (N, Q <= 100 000)下面N行:第i个节点的父亲.如果是根,则为0 接下来Q行:op num op == 1:在根放入num个球…
3136: [Baltic2013]brunhilda Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 238  Solved: 73[Submit][Status][Discuss] Description 给定m个素数和Q个询问.每个询问有n个人,每次操作可以任意选择其中的一个素数p(素数可以重复使用),然后去掉剩余人数 mod p个人.对于每个询问,我们想知道,至少需要多少步操作才能去掉所有人. Input 第一行:素数个数m和询问个数Q(1…
BZOJ_3133_[Baltic2013]ballmachine_堆+倍增 Description 有一个装球机器,构造可以看作是一棵树.有下面两种操作: 从根放入一个球,只要下方有空位,球会沿着树滚下.如果同时有多个点可以走,那么会选择编号最小的节点所在路径的方向.比如依次在树根4放2个球,第一个球会落到1,第二个会落到3: 从某个位置拿走一个球,那么它上方的球会落下来.比如依次拿走5, 7, 8三个球: Input 第一行:球的个数N,操作个数Q (N, Q <= 100 000)下面N行…
Description 有n个水库,m条管道.Jester会在某些管道中间凿开一个洞,让水流出来或者用水泵把水打进去.保证这个流速是偶数.对于一条管道(u, v),如果在中间凿开了一个洞让水流出来,流速是2d m^3/s,那么水库u和v失水速度为d m^3/s.同理,如果往一条管道(u, v)注水,流速为2p m^3/s,那么u和v得到水的速度是p m^3/s. 给定图的构造以及每个水库的水流的变化,问每条边的方案是否唯一. Input 第一行:水库数量n,管道数量m (1 <= n <= 1…
炸一看好像很神仙的样子,其实就是个sb题 万年不见的1A 但是我们可以反过来想,先选一个起点到终点的联通块,然后这联通块后面相当于就能够走了,继续找联通块 然后就能发现直接相邻的脚步相同的边权为0,否则边权为1 直接bfs找最深的层就完事了 #include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<…