11 2021 档案

摘要:\(\text{Day-1}\) 惨遭遣返······ 这真是伟大的啊!! \(\text{Day1}\) \(day\) 几好像没有意义,反正只有一天 \(\text{T1}\) 极致 \(H_2O\) 机子跑得非常“快”,样例四直接飙出 \(1s\) 了! 确实无语 还担心过不了呢 提前把 \( 阅读全文
posted @ 2021-11-27 08:50 leiyuanze 阅读(53) 评论(0) 推荐(0)
摘要:\(\text{Problem}\) 元素带类型与权值,每次修改权值或类型,求区间每种类型和的 \(k\) 次方和 强制在线 \(\text{Solution}\) 显然简单分块,根据询问需要发现要 维护任意两块之间的答案,每种类型的权值在块中的前缀和 询问就很简单,考虑枚举散块出现的类型先去除其在 阅读全文
posted @ 2021-11-19 15:14 leiyuanze 阅读(54) 评论(0) 推荐(0)
摘要:\(\text{Problem}\) 强制在线静态询问区间众数 \(\text{Solution}\) 不得不说 \(vector\) 是真的慢 做 \(LOJ\) 数列分块入门 \(9\) 卡时间卡了两个小时没成功 说说够快得做法 对原数列分块 考虑已经预处理出任意两块之间得答案 散块中出现的颜色 阅读全文
posted @ 2021-11-19 14:54 leiyuanze 阅读(28) 评论(0) 推荐(0)
摘要:\(\text{Solution}\) 涉及到插入,分块需要动态维护块内的元素及相对位置 于是妙用 \(\text{vector}\) 学到了 \(insert\) 操作,在某个迭代器前插入元素 这样我们对元数列分块,块长 \(\sqrt n\) 每个块用 \(\text{vector}\) 维护 阅读全文
posted @ 2021-11-19 14:39 leiyuanze 阅读(120) 评论(0) 推荐(0)
摘要:\(\text{Solution}\) 一看有区间赋值直接上 \(ODT\) \(\text{Code}\) #include <cstdio> #include <iostream> #include <set> #define re register using namespace std; i 阅读全文
posted @ 2021-11-19 14:32 leiyuanze 阅读(34) 评论(0) 推荐(0)
摘要:\(\text{Solution}\) 显然 \(dp\),\(f_x = min_{y\in subtree_x}f_y + a_x \cdot b_y\) 必然可以用李超线段树解决 在树上就线段树合并即可 当然可以树上启发式合并省去线段树合并,然后李超树维护 不过显然前者更好打 既然是斜率优化, 阅读全文
posted @ 2021-11-16 20:13 leiyuanze 阅读(37) 评论(0) 推荐(0)
摘要:\(\text{Solution}\) 明显有 \(DP\) \[ f_i = f_j + 1(j < i,Mx_j \le a_i,a_j \le Mn_i) \] 然后 \(CDQ\) 分治即可 注意分治顺序 \(\text{Code}\) #include <cstdio> #include 阅读全文
posted @ 2021-11-14 21:11 leiyuanze 阅读(35) 评论(0) 推荐(0)
摘要:\(\text{Solution}\) 一眼 \(ODT\) 为避免每次都数颜色数量,提前记录下来,每次修改更新下 \(\text{Code}\) #include <cstdio> #include <iostream> #include <set> #define re register usi 阅读全文
posted @ 2021-11-14 20:08 leiyuanze 阅读(25) 评论(0) 推荐(0)
摘要:\(\text{Naive Solition}\) 当然是 \(ODT\) 暴力啦 \(Luogu\) 煞费苦心加强了数据,于是就过不了了。。。 不过 \(LibreOJ\) 上可以过 #include <cstdio> #include <iostream> #include <set> #def 阅读全文
posted @ 2021-11-14 11:37 leiyuanze 阅读(55) 评论(0) 推荐(0)
摘要:\(\text{Solution}\) 不考虑起点区间和终点区间的限制,求区间中位数 可以二分中位数,大于等于中位数的位置赋为 \(1\),小于的位置赋 \(-1\) 当区间和大于等于 \(0\) 时此数才可能为中位数 因为有多个询问,但中位数数值只可能有 \(n\) 个 所以预处理时枚举当前中位数 阅读全文
posted @ 2021-11-13 14:48 leiyuanze 阅读(52) 评论(0) 推荐(0)
摘要:\(\text{Problem}\) 有一个有向完全图,所有的 \(u\) 到 \(v\) 的边权为 \(a_u\) 修改 \(m\) 此有向边边权,求最终图上两两点对的最短路之和 \(1\le n \le 10^5,1\le m \le 3000,1\le a_u \le 10^6\) \(\te 阅读全文
posted @ 2021-11-13 14:19 leiyuanze 阅读(127) 评论(0) 推荐(0)
摘要:简要题解 这套题比较 \(H_2O\) 建议题目背景美文共赏 \(\text{T1}\) 显然一个 \(O(n^3)\) 不能过的 \(dp\) 然而过了?! 用心在该卡时间的地方卡一卡 \(\text{Code}\) #include <cstdio> #include <algorithm> # 阅读全文
posted @ 2021-11-10 17:08 leiyuanze 阅读(141) 评论(0) 推荐(0)
摘要:\(\text{Solution}\) 树上主席树板子 \(\text{Code}\) #include <cstdio> #include <algorithm> #define re register using namespace std; const int N = 1e5 + 5; int 阅读全文
posted @ 2021-11-09 21:19 leiyuanze 阅读(18) 评论(0) 推荐(0)
摘要:\(\text{Solution}\) 又忘了线段树分治!! 显然维护一个上凸包 发现加点和删点可以变成限制存在时间 然后把点放在线段树上,线段树下标表示时间 加点时先把点按横坐标排序,然后就可以单调队列维护每个线段树节点的上凸包 询问再按斜率排序,这样可以弹点而不需要二分了 \(O(n \log 阅读全文
posted @ 2021-11-05 13:48 leiyuanze 阅读(36) 评论(0) 推荐(0)
摘要:\(\text{Solution}\) 很容易想到 \(dp\) \[ f_i = f_j + (h_i-h_j)^2 + \sum_{k=i+1}^{j-1}w_k \] 令 \(s_i = \sum_{k=1}^i w_i\) 则 \[ f_i = s_{i-1} + h_i^2 -2h_j \ 阅读全文
posted @ 2021-11-05 13:28 leiyuanze 阅读(39) 评论(0) 推荐(0)