Gym - 101620H_Hidden Hierarchy(树+模拟)】的更多相关文章

Hidden Hierarchy 题目链接 题目描述 You are working on the user interface for a simple text-based file explorer. One of your tasks is to build a navigation pane displaying the directory hierarchy. As usual, the filesystem consists of directories which may con…
题意: 在一些给定的目录里按要求展开到制定大小并按字典序输出 思路: 因为有目录这个东西,所以想到模拟一个类似字典树的东西,不过这里每个儿子可能有n个节点,而且不能O(1)查询了 代码超长.. #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<string> #include<sta…
题目链接:hdu_5818_Joint Stacks 题意: 给你两个栈,多了个合并操作,然后让你模拟 题解: 很容易想到O(1)的单个栈操作,O(n)的合并操作,这样肯定超时,所以我们要将时间复杂度均摊一下,让每个操作都是logn的,于是用上了线段树模拟. 线段树考虑染色,线段树的区间代表的是操作编号,0代表为A栈,1代表为B栈,每次merge 就把1到i这个区间染成指定颜色,然后pop就在线段树中找最右边的对应颜色的点.这样每次操作都是logn 不过官方题解给的是O(n)的解法,反正我是没想…
昨天考试被教育了一波.为了学习一下\(T3\)的科技,我就找到了这个远古时期的\(cf\)题(虽然最后\(T3\)还是不会写吧\(QAQ\)) 顾名思义,这个题目其实可以建成一个费用流的模型.我们用流量来限制区间个数,用费用强迫它每次每次选择最大的区间就可以啦.但是因为询问很多,复杂度似乎不行,于是就有了这种神奇的科技--线段树模拟费用流. 在原先的费用流模型里,我们有正反两种边,而反向边的意义就在于,在每一次增广的时候可以反悔以前的操作,把局部最优向更大范围的局部更优优化. 参考反向边的原理,…
数据较大,需要先把每个top不会操作到的段缩成一个点,记录其开始和结束的位置,和top能操作到的点一起建立一颗伸展树模拟 然后就是普通的队列模拟操作 /* 不会被top操作到的区间就缩点 通过splay tree模拟出序列,初始序列的第i个缩点对应的树结点也是i 操作top a:找到结点a,将其移到最左边 query a:结点a的左边有多少人 rank a:第a个结点是第几个结点 */ #include<iostream> #include<cstring> #include<…
用伸展树模拟插队比线段树快乐3倍.. 但是pojT了.别的oj可以过,直接贴代码. 每次更新时,找到第pos个人,splay到根,然后作为新root的左子树即可 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define maxn 200005 using namespace std; ],num[maxn],key[maxn],size[maxn],to…
//C++深度优先搜索(递归树模拟) #define _CRT_SECURE_NO_WARNINGS #include <iostream> #define MAX_N 1000 using namespace std; int a[MAX_N]; int n,k; //已经从前i项得到了和sum,然后对于i项之后的进行分支 bool dfs(int i,int sum) { //如果前n项都计算过了 ,则返回sum是否与k相等 if(i==n) { return sum==k; } //不加…
题意:给定N,M,然后给出M组信息(u,v,l,r),表示u到v有[l,r]范围的通行证有效.问有多少种通行证可以使得1和N连通. 思路:和bzoj魔法森林有点像,LCT维护最小生成树.  开始和队友在想维护连通性,而不是维护树,这样好像会很麻烦. 队友yy了一个算法:用线段树模拟并查集维护连通性.(发现和标程有点像? 我的代码:LCT维护最小生成树. ...先给代码,后面补一下题解. #include<bits/stdc++.h> #define ll long long using nam…
题目大意:n个小孩按顺时针站成一圈,每次会有一个小孩出队(第一个出队的小孩已知),在他出队时会指定下一个出队的小孩,直到所有的小孩全部出队游戏结束.第p个出队的小孩会得到f(p)个糖果,f(p)为p的正约数个数.问获得最多糖果的小孩是谁?并求出他获得的糖果数.如果有多解,只输出最先出队的那个小孩. 题目分析:先将1~n之内的具有最多约数个数并且最小的那个数打出来,然后模拟相应的次数操作即可.模拟时利用到线段树,用线段树维护区间中有多少个小孩还没有出队,每次出队一个小孩就将他在树中删除,最后利用线…
[BZOJ4523][Cqoi2016]路由表 Description 路由表查找是路由器在转发IP报文时的重要环节.通常路由表中的表项由目的地址.掩码.下一跳(Next Hop)地址和其他辅助信息组成.例如: 当路由器收到一个IP报文时,会将报文中的目的IP地址与路由表中的表项逐条进行比较,选择匹配且最明确的表项,将报文转发给该表项中指定的下一跳. 匹配的过程是将报文中的目的地址和表项中的目的地址分别转为二进制串,再查看表项中的掩码长度,若掩码长度为x,则将两个二进制串的前x位进行比较,如果相…