随笔分类 -  ICPC-数据结构

摘要:记一下数组+node实现+封装的新板子 http://acm.hdu.edu.cn/showproblem.php?pid=2222 http://acm.hdu.edu.cn/showproblem.php?pid=2896 http://acm.hdu.edu.cn/showproblem.ph 阅读全文
posted @ 2019-07-23 13:36 nervending 阅读(202) 评论(0) 推荐(0)
摘要:整理一下板子 换了种写法 递归和循环都有, 属于比赛的时候翘起来很快的写法,速度比oiwiki上的板子慢了100ms左右吧 阅读全文
posted @ 2019-06-07 03:23 nervending 阅读(197) 评论(0) 推荐(0)
摘要:https://codeforc.es/contest/293/problem/E 题解: 如果我们和poj1741一样,暴力预处理出子树中所有的点对信息 那么问题就变成了一个二维偏序问题 多少个点对满足w1+w2<=W且l1+l2<=L 参考树状数组求逆序对,用树状数组保存l1的信息,对于每个l2 阅读全文
posted @ 2019-05-23 09:31 nervending 阅读(243) 评论(0) 推荐(0)
摘要:https://vjudge.net/problem/HDU-1542 直接离散化+扫描线即可 主要是复习一下代码细节 阅读全文
posted @ 2019-05-16 03:36 nervending 阅读(221) 评论(0) 推荐(0)
摘要:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=688&pid=1005 题意: 略 题解: 邀请赛前复习一下板子.. 线段树优化建图+分层图最短路 在dij里面写松弛会不少一些,如果真的建了11层图,貌似会T 阅读全文
posted @ 2019-05-16 02:04 nervending 阅读(293) 评论(0) 推荐(0)
摘要:题意: 一棵树,多次询问,每次询问k条路径上的相交点个数,k只有几十个 题解: 显然,对于每个路径进行树链+1,答案就是为k的点的个数,由于询问的特殊性,我们直接用odt维护就行 最后速度还好 阅读全文
posted @ 2019-05-15 12:33 nervending 阅读(250) 评论(0) 推荐(0)
摘要:https://codeforc.es/contest/86/problem/D 题意: 问一些区间[l,r]内所有至少一次的数字*该数字的出现次数^2之和 题解: 裸题,复习一下莫队, 根号算法果然很慢..2e5跑了2.5s 阅读全文
posted @ 2019-05-13 21:18 nervending 阅读(258) 评论(0) 推荐(0)
摘要:这不是原题吗... 具体做法参考codefores 587 E 不过这题卡常... 写题解纯粹是为了记录一下快读... 阅读全文
posted @ 2019-05-10 22:31 nervending 阅读(218) 评论(0) 推荐(0)
摘要:题意: 一个数列多组询问,每次询问[l,r]中最多能选多少个数字,其中每个数字的出现次数不超过k次 题解: 我们保存对于每个位置上,出现超过k次的位置,那么对于每次询问,我们就变成了查询区间[l,r]大于r的数字个数 可以离线,但是本题强制在线,因此使用主席树 阅读全文
posted @ 2019-04-23 21:52 nervending 阅读(329) 评论(0) 推荐(0)
摘要:链接:https://nanti.jisuanke.com/t/38229 题意: 给一棵树,多次查询,每次查询两点之间权值<=k的边个数 题解: 离线询问,树链剖分后bit维护有贡献的位置即可 #include <bits/stdc++.h> #define rep(ii,a,b) for(int 阅读全文
posted @ 2019-04-23 11:56 nervending 阅读(427) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/587/problem/E 一个序列, 1区间异或操作 2查询区间子集异或种类数 题解 解题思路大同小异,都是利用异或的性质进行转化,std和很多网友用的都是差分的思想,用两棵线段树 第一棵维护差分序列上的线性基,第二棵维护原序列的异或区 阅读全文
posted @ 2019-04-20 04:03 nervending 阅读(620) 评论(1) 推荐(0)
摘要:子树修改+路径修改+单点查询 树链剖分+区间维护即可 由于只有单点查询,我直接用了odt,复杂度还行 阅读全文
posted @ 2019-04-15 20:43 nervending 阅读(232) 评论(0) 推荐(0)
摘要:题意 一棵树 多次修改,每次修改一个点到根的所有边的颜色,并询问现在有哪些颜色染了恰好$m$条边 题解: 稍加思考可以知道,从某个点到根节点的颜色数,均摊复杂度很低,因此,可以考虑珂朵莉树维护重链剖分 这里也记录一下珂朵莉树的代码 代码: 阅读全文
posted @ 2019-04-02 13:28 nervending 阅读(265) 评论(0) 推荐(0)
摘要:题意: 一棵树, 操作1.$path(a,b)$之间的点权$+k$ 操作2.单点查询 题解: 树链剖分即可,注意代码细节,双向映射 主要是记录一下板子 阅读全文
posted @ 2019-04-01 19:08 nervending 阅读(185) 评论(0) 推荐(0)
摘要:https://vjudge.net/problem/HYSBZ-2733 给一些带权点,有些点是互相连通的, 然后给出2种操作,在两点间加一条边,或者询问一个点所在的连通块内的第k小值的编号 并查集辅助+splay的启发式合并就行 由于结构简单,动态开点线段树合并也可以做 我写的是splay,由于 阅读全文
posted @ 2019-02-10 09:14 nervending 阅读(232) 评论(0) 推荐(0)
摘要:https://codeforces.com/problemset/problem/1070/C 题意: 有很多活动,每个活动可以在天数为$[l,r]$时,提供$C$个价格为$P$的商品 现在从第一天起,每天恰好买$K$个,到第$N$天的花费为多少? 题解: 首先考虑维护区间,即第$i$天还需要多少 阅读全文
posted @ 2019-01-11 21:07 nervending 阅读(289) 评论(0) 推荐(0)
摘要:题意 一个$n*n$矩阵,初始全为0,每次翻转一个子矩阵,然后单点查找 题解 任意一种能维护二维平面的数据结构都可以 我这里写的是二维线段树,因为四分树的写法复杂度可能会退化,因此考虑用树套树实现二维线段树 简单来说就是每个点都维护了一颗线段树... 因为二维线段树难以实现pushdown,而他的查 阅读全文
posted @ 2019-01-09 01:12 nervending 阅读(274) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/893/problem/F 题意: 给一个有根树, 多次查询,每次查询对于$x$i点的子树中,距离$x$小于等于$k$的所有点中权值最小的一个 查询强制在线 题解: 显然,暴力就是,对于每次搜索深搜距离x小于$k$的所有点搜索 那么我们考 阅读全文
posted @ 2019-01-08 02:23 nervending 阅读(266) 评论(0) 推荐(0)
摘要:题意: 最大$10^9$的区间, $3*10^5$次区间修改,每次操作后求整个区间的和 题解: 裸的动态开点线段树,计算清楚数据范围是关键... 经过尝试 $2*10^7$会$MLE$ $10^7$会$RE$ 用$vector$但是一开始没有$resize$到最大也会$MLE$ 如果节点内部信息保存 阅读全文
posted @ 2019-01-07 15:44 nervending 阅读(322) 评论(0) 推荐(0)
摘要:题意: 有n个点,q个询问, 每次询问有一种操作。 操作1:u→[l,r](即u到l,l+1,l+2,...,r距离均为w)的距离为w; 操作2:[l,r]→u的距离为w 操作3:u到v的距离为w 最终求起点到其他点的最短距离,到达不了输出-1 题解 线段树优化建图+最短路... 不知道这种东西,百 阅读全文
posted @ 2019-01-07 00:26 nervending 阅读(299) 评论(0) 推荐(0)