随笔分类 -  主席树

摘要:数据结构复习1 线段树、主席树、平衡树、树链剖分 update【2018.7.23】 我放弃指针版的了它欺负我呜呜呜 线段树 标记 多个标记考虑优先级 满足区间加法就可以用线段树 主席树 细节: x和y是节点编号,所以是root[i]不是i 每次复制原来的节点,再新建 平衡树 Treap 满足平衡树 阅读全文
posted @ 2018-07-21 17:54 Candy? 阅读(659) 评论(0) 推荐(1) 编辑
摘要:【LGR 049】洛谷7月月赛 比赛开始一个小时才想起来QwQ,当场写了ABC A : " P4752 Divided Prime" 日常送分题 注意只留一个非1数判他是不是质数 B : " P4753 River Jumping" 题意:有跳跃距离下限,求能否经过所有石头恰好一次跳一个来回 贪心 阅读全文
posted @ 2018-07-16 11:17 Candy? 阅读(406) 评论(0) 推荐(0) 编辑
摘要:"4546: codechef XRQRS" 可持久化Trie codechef上过了,bzoj上蜜汁re,看别人说要开5.2e5才行。 cpp include include include include include using namespace std; typedef long lon 阅读全文
posted @ 2017-05-05 19:28 Candy? 阅读(278) 评论(0) 推荐(0) 编辑
摘要:"4826: [Hnoi2017]影魔" 题意:一个排列,点对$(i,j)$,$p=max(i+1,j 1)$,若$p 一个点对只有唯一的最大值$p$ 可以按照$p$来分类统计 单调栈预处理$l_i, r_i$第一个大于的位置 $(li,\ ri)$这个点对贡献p1 $(l_i,\ i+1...r_ 阅读全文
posted @ 2017-04-24 11:31 Candy? 阅读(351) 评论(0) 推荐(0) 编辑
摘要:"4539: [Hnoi2016]树" 题意:不想写。复制模板树的子树,查询两点间距离。 终于有一道会做的题了...... 画一画发现可以把每次复制的子树看成一个大点来建一棵树,两点的lca一定在大点的lca里 然后每个大点维护一坨信息:节点编号的区间范围,到根的距离,大点对应子树的根,大点是接在了 阅读全文
posted @ 2017-04-12 12:07 Candy? 阅读(344) 评论(0) 推荐(0) 编辑
摘要:"UOJ 77. A+B Problem" 题意:自己看 接触过线段树优化建图后思路不难想,细节要处理好 乱建图无果后想到最小割 白色和黑色只能选一个,割掉一个就行了 之前选白色必须额外割掉一个p[i],i向i+n连p[i],然后i+n向之前点连INF就行了 向一段区间连边?果断线段树优化 等等,还 阅读全文
posted @ 2017-03-29 21:47 Candy? 阅读(689) 评论(0) 推荐(0) 编辑
摘要:"3551: [ONTAK2010]Peaks加强版" 题意:带权图,多组询问与一个点通过边权$\le lim$的边连通的点中点权k大值,强制在线 "PoPoQQQ大爷题解传送门" 说一下感受: 容易发现一定选最小生成树上的边,然后用到了一个神奇的东西 Kruskal重构树 进行Kruskal过程中 阅读全文
posted @ 2017-03-26 19:09 Candy? 阅读(476) 评论(0) 推荐(0) 编辑
摘要:"3123: [Sdoi2013]森林" 题意:一个森林,加边,询问路径上k小值。保证任意时刻是森林 LCT没法搞,树上kth肯定要用树上主席树 加边?启发式合并就好了,小的树dfs重建一下 注意 1. 测试点编号不是数据组数!!! 2. 加边的时候要更新邻接链表啊,并且fa要清空 3. 并查集维护 阅读全文
posted @ 2017-03-26 15:57 Candy? 阅读(336) 评论(0) 推荐(0) 编辑
摘要:题意: 查询区间中出现次数$>2$的颜色个数 一眼主席树,区间中$l \le last[i] \le r$的个数减去$l \le last[last[i]] \le r$的个数,搞两颗主席树来做 然后就T了 因为bzoj上数据是1e6.... 还是离线树状数组吧.... 阅读全文
posted @ 2017-03-20 23:12 Candy? 阅读(406) 评论(1) 推荐(0) 编辑
摘要:传送门 题意: 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数。例如S={1,1,1,4,13},8无法表示为集合S的子集的和,故集合S的神秘数为8。现给定n个正整数a[1]..a[n],m个询问,每次询问给定一个区间[l,r](l<=r),求由a[l],a[l+1],…,a 阅读全文
posted @ 2017-03-12 23:02 Candy? 阅读(319) 评论(0) 推荐(0) 编辑
摘要:传送门 题意: 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整。给你一个 长度为n的序列s。回答Q个这样的询问:s的左端点在[a,b]之间,右端点在[c,d]之间的子序列中,最大的中位数。 我会使用一些方式强制你在线。 最后一句话太可怕了$Q 阅读全文
posted @ 2017-03-02 21:33 Candy? 阅读(465) 评论(0) 推荐(0) 编辑
摘要:传送门 题意:查询树上根节点值*子树中权值和$\le m$的最大数量 最大值是多少 求$DFS$序,然后变成区间中和$\le m$最多有几个元素,建主席树,然后权值线段树上二分就行了 $WA$:又把边表开小了..... 好吧我$zz$了有根树加无向边干什么.... 阅读全文
posted @ 2017-03-02 18:29 Candy? 阅读(328) 评论(0) 推荐(0) 编辑
摘要:传送门 题意: 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束(第Si秒和Ei秒任务也在运行),其优先级为Pi 调度系统会经常向查询系统询问,第Xi秒正在运行的任务中,优先级最小的Ki个任务(即将任务按照优先级从小到大排序后取前Ki个)的优先级之和 阅读全文
posted @ 2017-03-02 17:08 Candy? 阅读(332) 评论(0) 推荐(0) 编辑
摘要:3585: mex Description 有一个长度为n的数组{a1,a2,...,an}。m次询问,每次询问一个区间内最小没有出现过的自然数。 有一个长度为n的数组{a1,a2,...,an}。m次询问,每次询问一个区间内最小没有出现过的自然数。 Input 第一行n,m。 第二行为n个数。 从 阅读全文
posted @ 2017-01-28 23:28 Candy? 阅读(1013) 评论(0) 推荐(0) 编辑
摘要:题意: 询问区间不同种类颜色数 [2016-11-15] 离线好厉害 对于每一个区间询问,一个数只考虑一次,那么考虑他最后出现的一次 将询问按r排序 从1到n扫描,用树状数组维护一个位置应不应该考虑(记不记入答案),让每种颜色最后一个出现位置贡献 last[x]是x上一个出现的位置,每到一个a[i] 阅读全文
posted @ 2017-01-14 20:19 Candy? 阅读(883) 评论(0) 推荐(0) 编辑
摘要:3514: Codechef MARCH14 GERALD07加强版 Description N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数。 N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数。 Input 第一行四个整数N、M、K、type 阅读全文
posted @ 2017-01-12 20:52 Candy? 阅读(1294) 评论(0) 推荐(0) 编辑
摘要:1146: [CTSC2008]网络管理Network Description M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门。为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络。该网络的结构由N个路由器和N-1条高速光缆组成。 每个部门都有一 阅读全文
posted @ 2017-01-01 10:59 Candy? 阅读(961) 评论(0) 推荐(0) 编辑
摘要:2588: Spoj 10628. Count on a tree Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 阅读全文
posted @ 2016-12-24 21:43 Candy? 阅读(294) 评论(0) 推荐(0) 编辑
摘要:1901: Zju2112 Dynamic Rankings Description 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤j-i+1),并且,你可 阅读全文
posted @ 2016-12-18 19:56 Candy? 阅读(1843) 评论(0) 推荐(3) 编辑
摘要:3524: [Poi2014]Couriers Description 给一个长度为n的序列a。1≤a[i]≤n。m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出0。 给一个长度为n的序列a。1≤a[i]≤n。m组询问 阅读全文
posted @ 2016-12-18 18:21 Candy? 阅读(362) 评论(0) 推荐(0) 编辑