随笔分类 -  信竞

信息技术竞赛
摘要:宝石专家 离线 $n$个宝石带权值$a_i$从$1$排到$n$,$m$次询问,问区间$[l,r]$中权值相同的宝石的最近距离 离线做法的好题。 我们将所有询问按$r$排序,预处理出 ,`lp[i]`表示与位置$i$上的宝石有相同权值的上一个宝石位置为$lp[i]$,然后每次在区间$[l,r]$($l 阅读全文
posted @ 2019-10-31 19:52 Santiego 阅读(197) 评论(0) 推荐(0)
摘要:使用线段树合并,每个节点维护一棵权值线段树,下标为救济粮种类,区间维护数量最多的救济粮编号(下标)。所以每个节点答案即为$tre[rot[x]]$。 然后运用树上点的差分思想,对于分发路径$u,v$,我们在$u$上+1,在$v$+1,在$lca(u,v)$处 1,在$fa(lca)$处 1,最后统计 阅读全文
posted @ 2019-10-31 14:50 Santiego 阅读(236) 评论(0) 推荐(0)
摘要:天天爱跑步 线段树合并 使用线段树合并做法 有路径$u_i lca(u_i,v_i) v_i$,将路径分为两半分开讨论。 先考虑$u_i lca(u_i,v_i)$前一半路径: 对节点$x$有贡献,当且仅当$dep[u_i] dep[x]=w[x]$,移项使含$x$的在一边使统计更方便$dep[u_ 阅读全文
posted @ 2019-10-31 11:45 Santiego 阅读(346) 评论(1) 推荐(1)
摘要:运输计划 二分答案 树上差分 "P2680 运输计划" 附赠样例图: 首先容易想到二分答案,将求解问题转换为判定,并且注意到答案显然具有单调性。 然后我们考虑如何快速判定。先预处理出所有计划路径长($dis[i]$表示根节点到节点$i$的距离,$dis[u]+dis[v] 2\times dis[l 阅读全文
posted @ 2019-10-28 17:58 Santiego 阅读(166) 评论(0) 推荐(0)
摘要:树上差分备忘 点差分 树上主席树就是这个原理来的 边差分 先把边塞给较深的那个点上 统计 一遍$dfs$,在回溯时加起来即可 板子 "[JLOI2014]松鼠的新家" cpp include include define MAXN 300003 using namespace std; int n, 阅读全文
posted @ 2019-10-28 15:40 Santiego 阅读(137) 评论(0) 推荐(1)
摘要:Peaks 线段树合并 $n$个带权值$h_i$山峰,有$m$条山峰间双向道路,$q$组询问,问从$v_i$开始只经过$h_i\le x$的路径所能到达的山峰中第$k$高的山峰,如果无解输出$ 1$ 线段树合并好题。~~吊打主席树、Kruskal重构树的典范~~ 首先发现可以离线,我们将所有询问按$ 阅读全文
posted @ 2019-10-28 14:59 Santiego 阅读(176) 评论(0) 推荐(0)
摘要:[HNOI2012]永无乡 线段树合并 ~~啥?平衡树?看我用权值线段树切了它~~ 首先并查集维护联通块,然后合并联通块时即合并两个father的线段树,查询$k$大时直接上权值线段树。 注意动态开点。 cpp include define MAXN 100010 define MAXM MAXN 阅读全文
posted @ 2019-10-27 21:43 Santiego 阅读(175) 评论(0) 推荐(0)
摘要:[USACO08FEB]酒店Hotel 线段树 "题面" 其实就是区间多维护一个 (表示从左开始有连续 个空房,一直有连续 个空房到最右边),合并时讨论一下即可。 另外,查询时 按顺序 判断左节点、跨左右节点、右节点是否存在空房大于$x$的情况,有则递归下去,这样保证找到最左区间。 阅读全文
posted @ 2019-10-27 21:02 Santiego 阅读(221) 评论(0) 推荐(0)
摘要:divisors 数学 给定$m$个不同的正整数$a_1, a_2,\cdots, a_m$,请对$0$到$m$每一个$k$计算,在区间$[1, n]$里有多少正整数是$a$中恰好$k$个数的约数。 极度考验语文能力的题面。 套路一般分解质因数,但是我们发现分解质因数之后统计会很麻烦,又发现$m$, 阅读全文
posted @ 2019-10-27 18:22 Santiego 阅读(162) 评论(0) 推荐(0)
摘要:Count on a tree 树上主席树 给$n$个树,每个点有点权,每次询问$u,v$路径上第$k$小点权,强制在线 求解区间静态第$k$小即用主席树。 树上主席树类似于区间上主席树,我们利用前缀和相减获得区间的信息,树上主席树也是这样,维护一个到根节点的前缀和。对于$(u,v)$路径,$sum 阅读全文
posted @ 2019-10-23 13:20 Santiego 阅读(365) 评论(0) 推荐(0)
摘要:[湖南集训]谈笑风生 线段树合并 给一棵树$n$个节点,$q$次询问,每次给定$p,k$,问有多少三元组$(p,b,c)$满足$p,b$均为$c$的父亲,$p,b$在树上的距离不超过$k$ $n,q\le 10^5$ 很有意思的一道题。 两种情况讨论: $b$在$a$的上面,我们发现$b$有$min 阅读全文
posted @ 2019-10-15 19:12 Santiego 阅读(176) 评论(0) 推荐(0)
摘要:STL备忘 lower_bound 查找第一个大于或等于的数,返回该数字的地址,地址减去首地址即得到数组下标(首地址下标为0) upper_bound 查找第一个大于的数 unique 去重,常用于离散化,返回去重后不重复序列的最后一个元素的下一个元素 阅读全文
posted @ 2019-10-15 13:03 Santiego 阅读(95) 评论(0) 推荐(0)
摘要:[TJOI2013]松鼠聚会 "luogu P3964" 首先容易得到两点间距离是$max(|x_1 x_2|, |y_1 y_2|)$(即切比雪夫距离) 然后有个套路:原$(x,y)$求曼哈顿距离可以转换为$(x+y,x y)$求切比雪夫距离,同样的$(x,y)$求切比雪夫距离就是求$(\frac 阅读全文
posted @ 2019-10-15 13:02 Santiego 阅读(127) 评论(0) 推荐(0)
摘要:斐波那契数列 矩阵乘法优化DP 求$f(n) \%1000000007​$,$n\le 10^{18}​$ 矩阵乘法:$i\times k$的矩阵$A$乘$k\times j$的矩阵$B$得到$k\times k$的矩阵,其中第$i$列第$j$行的数就是$A$的第$i$行所有数与$B$的第$j​$列 阅读全文
posted @ 2019-10-14 21:55 Santiego 阅读(329) 评论(0) 推荐(0)
摘要:[TJOI2013]奖学金 乱搞 从$c$个二元组$(v,w)$中选出$n$个,使其$v$的中位数最大的同时使$w$和小于等于$f$,求这个中位数 有点意思。有点像二分答案的思路,枚举中位数,将原问题转换为一个判定问题,贪心选择中位数之前$w$最小的$(n 1)/2$个,之后$w$最小的$(n 1) 阅读全文
posted @ 2019-10-14 18:07 Santiego 阅读(115) 评论(0) 推荐(0)
摘要:铁轨 清北学堂 线段树 【题目描述】 R 国的铁轨经常会进行重新修建。 R 国是一个细长的国家,一共有 n 个城市排成一排,首都位于 1 号城市,相邻两个城市之间有铁路相连。 每次新建铁轨的时候,一定是从首都开始修建,直到某一个城市为止,这其间的铁路都会变成新版本的设 施,而旧设施会被拆除。然而,由 阅读全文
posted @ 2019-10-14 13:49 Santiego 阅读(212) 评论(0) 推荐(0)
摘要:P3939 数颜色 线段树动态开点 "luogu P3939" 水。直接对每种颜色开个权值线段树即可,注意动态开点。 cpp include include define MAXN 300003 define MAXM MAXN 30 define mid ((l+r) 1) inline void 阅读全文
posted @ 2019-10-12 22:29 Santiego 阅读(180) 评论(0) 推荐(0)
摘要:[NOI2010]超级钢琴 倍增 "题面" 暴力:枚举区间丢入堆$O(n^2logn)$ 正解:考虑每次枚举和弦起点$s$,那么以$s$为起点的和弦为$sum "t] sum[s" $,要使其最大则让$sum[t]$最大,问题转换为求区间$[l,r]$最大$sum[i]$,使用st表维护即可。 然后 阅读全文
posted @ 2019-10-12 21:42 Santiego 阅读(171) 评论(0) 推荐(0)
摘要:[HNOI2004]L语言 字典树 记忆化搜索 给出$n$个字符串作为字典,询问$m$个字符串,求每个字符串最远能匹配(字典中的字符串)到的位置 容易想到使用字典树维护字典,然后又发现不能每步一直贪心无脑取最长匹配,所以考虑$dfs$穷举情况,每次匹配到新字符串后,分两种情况,要么继续当前的匹配,要 阅读全文
posted @ 2019-10-12 19:27 Santiego 阅读(153) 评论(0) 推荐(0)
摘要:对拍 用于检验程序正确性,当然你也可以手造样例。 写一个数据生成器 ,准备自己的程序 和一个绝对正确的暴力程序 写一个 批处理文件用于判断暴力和自己程序输出的是否一致 阅读全文
posted @ 2019-10-08 13:49 Santiego 阅读(110) 评论(0) 推荐(0)