随笔分类 -  数据结构——主席树

摘要:题面 "传送门" 题解 首先考虑一个贪心,我们把所有的人按$a_i$排个序,那么排序后的第一个人到$k$,第二个人到$k+1$,...,第$i$个人到$k+i 1$,易证这样一定是最优的 然后发现这里有一个很重要的性质,$a_i$互不相同。那么就必定存在一个点$mid$,在$mid$左边(包括$mi 阅读全文
posted @ 2019-03-11 16:31 bztMinamoto 阅读(239) 评论(0) 推荐(0)
摘要:题面 $n\leq 10^{12},k\leq 100$ 题解 一眼就是一个$Min\_25$筛+拉格朗日插值优化,然而打完之后交上去发现只有$60$分 神$tm$还要用主席树优化…… 大概是这样,设$g(n,j)$表示$1$到$n$之间的所有满足$i$是质数或者$i$的最小质因子大于$p_j$的所 阅读全文
posted @ 2019-02-21 20:24 bztMinamoto 阅读(336) 评论(0) 推荐(0)
摘要:"传送门" 我们先把果汁按照美味度排序,枚举$d$,那么肯定是贪心的选择美味程度不小于$d$的且最便宜的果汁 发现$d$可以二分,那么在主席树上二分就可以了 据说还有整体二分的大佬然而我并不会 //minamoto include define R register define ll long l 阅读全文
posted @ 2019-01-15 11:26 bztMinamoto 阅读(268) 评论(0) 推荐(0)
摘要:传送门 我们可以进行离线处理,把每一个情报员的权值设为它开始收集情报的时间 那么设询问的时间为$t$,就是问路径上有多少个情报员的权值小于等于$t-c-1$ 这个只要用主席树上树就可以解决了,顺便用树剖求一下LCA 阅读全文
posted @ 2018-10-16 13:53 bztMinamoto 阅读(230) 评论(0) 推荐(0)
摘要:传送门 据说这题做法叫做可持久化trie树?(然而我并不会) 首先考虑一下贪心,从高位到低位枚举,如果能选1肯定比选0优 假设已经处理到了$b$的第$i$位,为1(为0的话同理就不说了) 那么只有当$a_j+x$的第$i$位为0时才能让答案的第$i$位为$1$ 考虑把$x$的影响去掉。如果当前的答案 阅读全文
posted @ 2018-09-26 17:54 bztMinamoto 阅读(192) 评论(0) 推荐(0)
摘要:传送门 据说离线做法是主席树上树+启发式合并(然而我并不会) 据说bzoj上有强制在线版本只能用克鲁斯卡尔重构树,那就好好讲一下好了 这里先感谢LadyLex大佬的博客->这里 克鲁斯卡尔重构树可以用来解决一类诸如“查询从某个点出发经过边权不超过val的边所能到达的节点”的问题 首先不难发现,上面这 阅读全文
posted @ 2018-09-20 14:51 bztMinamoto 阅读(884) 评论(0) 推荐(1)
摘要:题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门。为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络。该网络的结构由N个路由器和N-1条高速光缆组成。每个部门都有一个专属的路由器,部门局域网内的所有机器都联向这个路由器,然后再通过这个通信 阅读全文
posted @ 2018-08-30 21:10 bztMinamoto 阅读(296) 评论(0) 推荐(0)
摘要:传送门 题意: 一个长度为n的数组,4种操作 : (1)C l r d:区间[l,r]中的数都加1,同时当前的时间戳加1 。 (2)Q l r:查询当前时间戳区间[l,r]中所有数的和 。 (3)H l r t:查询时间戳t区间[l,r]的和 。 (4)B t:将当前时间戳置为t 。 所有操作均合法 阅读全文
posted @ 2018-08-02 17:50 bztMinamoto 阅读(302) 评论(0) 推荐(1)
摘要:题意 你被给定一棵带点权的n个点的有根数,点从1到n编号。 定义查询 query(x,k): 寻找以x为根的k大点的编号(从小到大排序第k个点) 假设没有两个相同的点权。 输入格式: 第一行为整数n,第二行为点权,接下来n-1行为树边,接下来一行为整数m,下面m行为两个整数x,k,代表query(x 阅读全文
posted @ 2018-08-02 13:23 bztMinamoto 阅读(190) 评论(0) 推荐(0)
摘要:Description 一个长度为 n 的序列 a ,设其排过序之后为 b ,其中位数定义为 b[n/2] ,其中 a,b 从 0 开始标号 , 除法取下整。 给你一个长度为 n 的序列 s 。回答 Q 个这样的询问 : s 的左端点在 [a,b] 之间 , 右端点在 [c,d] 之间的子序列中 , 阅读全文
posted @ 2018-08-02 11:16 bztMinamoto 阅读(279) 评论(0) 推荐(0)
摘要:题目大意 给定一张$n$个点, $m$条边的无向图,求$S$ 到$T$的最短路,其中边权都是$2^k$的形式$n,m,k<=10^5$,结果对$10^9+7$取模 题解 大佬好厉害 跑一边dijstra大家应该都想的到 但问题是维护最短路的距离怎么实现 我太菜了除了python啥都想不到 我们可以把 阅读全文
posted @ 2018-08-01 21:57 bztMinamoto 阅读(414) 评论(1) 推荐(1)
摘要:主席树真是神仙操作啊……搞了好久才弄懂一点点QAQ 参考文章:https://www.cnblogs.com/zyf0163/p/4749042.html https://blog.csdn.net/creatorx/article/details/75446472 https://blog.csd 阅读全文
posted @ 2018-08-01 10:54 bztMinamoto 阅读(1650) 评论(0) 推荐(3)
摘要:传送门 突然发现好像没有那么难……https://blog.csdn.net/stone41123/article/details/78167288 首先有两个操作,一个查询,一个连接 查询的话,直接在树上建主席树 然后难点在于连接 用启发式合并就可以了(想了半天都没想出来) 每次合并时,我们把小的 阅读全文
posted @ 2018-07-31 16:57 bztMinamoto 阅读(300) 评论(0) 推荐(0)
摘要:题目描述 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。 输入输出格式 输入格式: 输入第一行包含两个整数n和m,即初始元素的个数和删除的元素个数。以下n行每行包 阅读全文
posted @ 2018-07-31 15:24 bztMinamoto 阅读(658) 评论(0) 推荐(1)
摘要:题意 给出以1号点为根的一棵有根树,问每个点的子树中与它距离小于等于l的点有多少个 题解 似乎有好多种做法啊……然而蒟蒻只会打打主席树的板子…… 调了一个上午一直WA……狠下心来重打一遍居然直接一遍过…… 先dfs一遍,把到根节点的距离算出来,然后建出树上的主席树 然后考虑,$d[v]-d[u]<= 阅读全文
posted @ 2018-07-31 12:10 bztMinamoto 阅读(288) 评论(0) 推荐(0)
摘要:传送门(权限) 传送门(非权限) 花了一晚上总算把代码调好了……才知道待修改主席树怎么操作…… 然而还是一知半解orz…… 先说说我的理解吧 我们一般建主席树的时候都是直接在序列上建的 但是如果有修改操作怎么办? 因为主席树维护的是前缀和 而树状数组刚好支持待修改前缀和 所以我们可以将主席树和树状数 阅读全文
posted @ 2018-07-31 08:36 bztMinamoto 阅读(329) 评论(0) 推荐(0)
摘要:题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 输入输出格式 输入格式: 第一行两个整数N,M。 第二行有N个整数,其中第i个整数 阅读全文
posted @ 2018-07-30 19:55 bztMinamoto 阅读(323) 评论(0) 推荐(1)
摘要:传送门 题解 话说……这完全就是个板子吧啊喂…… 不过更好奇的是为什么我第一次交竟然会WA??? 不知道主席树是什么的可以看看这篇文章 阅读全文
posted @ 2018-07-30 19:17 bztMinamoto 阅读(134) 评论(0) 推荐(0)
摘要:题目链接 传送门 题解 大佬好强 看了看数据范围,不是很明白为什么明明两道题却硬要挤在一道题里 0.5倍经验orz…… 前一半的数据$R,C<=200$ 前缀和+二分 $num[i][j][k]表示(1,1)到(i,j)中比大于等于k的数有几个$$sum[i][j][k]表示(1,1)到(i,j)中 阅读全文
posted @ 2018-07-29 21:57 bztMinamoto 阅读(239) 评论(0) 推荐(0)
摘要:题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分。超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束(第Si秒和Ei秒任务也在运行),其优先级为Pi。同一时间可能有多个任务同时执行,它们的优先 阅读全文
posted @ 2018-07-29 13:02 bztMinamoto 阅读(253) 评论(0) 推荐(0)

Live2D