摘要: 很妙的题目。 首先可以将询问给离线下来,将一条边的边权更改变为在 \([l,r]\) 的时间段中的权值为 \(w\),所以考虑线段树分治。 然后我们发现要求的就是每个时间的最小生成树,那我们如何优化复杂度呢? 我们有一个容易想到的方法: 对于时间段 \([l,r]\),设这段时间中未被更改的边集为 阅读全文
posted @ 2024-08-29 22:14 ~Cyan~ 阅读(29) 评论(0) 推荐(0)
摘要: 经典题目,对于绝对众数只需要考虑这一个序列的中位数在序列中出现次数是否大于一半即可。 这道题用线段树合并维护一下就做完了。 点击查看代码 #include<bits/stdc++.h> #define fir first #define sec second #define int long lon 阅读全文
posted @ 2024-08-22 16:33 ~Cyan~ 阅读(57) 评论(0) 推荐(0)
摘要: 逆天贪心 设对于一个点 \(x\) 花费 \(d\) 步能走到的最左边为 \(L_{x,d}\),最右边为 \(R_{x,d}\)。 主要证明一个东西:若 \((a,b)\) 这个询问中区间 \([L_{a,x},R_{a,x}]\) 与 \([L_{b,y},R_{b,y}]\) 有交,那么必然存 阅读全文
posted @ 2024-08-22 16:02 ~Cyan~ 阅读(28) 评论(0) 推荐(0)
摘要: AT_joisc2017_c 手持ち花火 一道神秘贪心题。 首先显然是二分速度 \(v\)。 然后发现题意可以被理解成其他人逐渐向 \(k\) 靠近,所以若跑了区间 \([l,r]\) ,那么跑的距离就是 \(x_r - x_l\) ,所以就要尽量增长跑动的时间,而注意到题意不是一碰到就要点燃,所以 阅读全文
posted @ 2024-08-21 21:18 ~Cyan~ 阅读(25) 评论(0) 推荐(0)
摘要: 一个非常简单的trick,之前一直没有去了解。 对于一个无向图的三元环个数,很容易能想到一个 \(O(\sum_{(u_i,v_i) \in E}du_{v_i} + m)\) 的做法。 我们考虑将每条边 \((u,v)\) 按照某种方法给每条边定向,使得三元环当且仅当 \((u \to v),(v 阅读全文
posted @ 2024-08-10 14:21 ~Cyan~ 阅读(18) 评论(0) 推荐(0)
摘要: Priority Queue 3 题意:有一个小根堆和 \(1\) ~ \(n\) 个数,以及一个操作序列,+ 表示 \(push\), - 表示 \(pop\),\(pop\) 有 \(m\) 次,问你有多少种插入顺序使得最后的 pop 集合与给出的的数字集合 \(Y\) 相同。 首先有个浅显的发 阅读全文
posted @ 2024-07-24 16:32 ~Cyan~ 阅读(60) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2024-01-31 14:36 ~Cyan~ 阅读(2) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2024-01-27 16:50 ~Cyan~ 阅读(10) 评论(0) 推荐(0)
摘要: 1.kmp 和 AC 自动机 AC自动机可以理解为多个串之间的kmp,具体还是非常简单。 首先建出 trie 树,接着你要做的就是将一段后缀连向与之相同的前缀,这样就构成了 fail tree。 具体应用: 1.求多个字符串分别在模式串出现的次数,在fail tree上解决即可。 2.做动态转移方程 阅读全文
posted @ 2024-01-27 16:44 ~Cyan~ 阅读(25) 评论(0) 推荐(0)
摘要: P4198 楼房重建 非常好题目,首先你显然能够得到一个楼房看得见的条件:当斜率严格大于之前的所有斜率时,这栋楼房可以被看见。 接着我们考虑线段树 \(sum_i\) 维护 \([l,r]\) 从 \(l\) 出发可以看到的楼房数。我们发现重点在于 push_up 函数的实现,设左区间为 \(ls\ 阅读全文
posted @ 2024-01-26 15:06 ~Cyan~ 阅读(48) 评论(0) 推荐(0)