01 2021 档案
摘要:人生第一道黑题祭 题解 本题偏重思维 判断回文可以考虑它的递归定义 只有一个字符的串是回文串。 只有两个字符的串,如果这两个字符相同,也是回文串; 如果 是回文串,那么在 的开头和末尾插入一个相同的字符,形成的新串也是回文串。 一个可以想到的方法是设
阅读全文
摘要:题解 这题很明显发现一个点到另一个点,必然最多只有一个进入下界的点和一个出来的点 分类讨论入点和出点的位置 要么都在 或都在 或分别有一个 那就有一个倍增做法 维护最优入点和最优出点即可 但考场并没想到这种方法 反而只想到了没脑的倍增维护矩阵转移的方法 我
阅读全文
摘要:题目 非常经典的题目 在 有 座山峰,每座山峰有他的高度 。有些山峰之间有双向道路相连,共 条路径,每条路径有一个困难值,这个值越大表示越难走。 现在有 组询问,每组询问询问从点 开始只经过困难值小于
阅读全文
摘要:题解 这题做法很多呢! 目前我只试过线段树合并,因为最近在学 对于每一个点开一颗关于粮食类型的线段树 维护数量和区间最多的类型 然后考虑到合并子树的过程就类似于树上差分后做前缀和 所以我们可以树上差分一下,省去树剖的一只 (但求 还是打了树剖) 最后
阅读全文
摘要:题解 套路套路地用线段树合并 注意:可能爆栈,所以 处理 合并要新开节点,不然后修改子树信息 #include<cstdio> #include<iostream> #define LL long long using namespace std;
阅读全文
摘要:题解 真真正正是个码农题,不过很套路,熟练就打得很快,不过要用点维护边的信息在 出要注意,不能处理此点的信息 #include<cstdio> #include<iostream> #include<cstring> using namespace s
阅读全文
摘要:题解 并不需要什么高级数据结构 用树链剖分维护 对于每种颜色开个 ,然后把是这种颜色的点的 序加进来排序 对于 这一区间问有没有某种颜色 相当于问某种颜色有没有至少一个在这个区间内 直接
阅读全文
摘要:题解 显然树形 一波 然后套路的运用标题 #include<cstdio> #include<iostream> #define ls (p << 1) #define rs (ls | 1) using namespace std; typedef long lon
阅读全文
摘要:题解 两只 的动态 ! 相比标算倍增 动态 既实用又好理解 #include<cstdio> #include<iostream> #define ls (p << 1) #define rs (ls | 1) using namesp
阅读全文
摘要:题解 本题的解法是丰富多彩的! 线段树做法是极好的 代码非常之少 一个很显然的想法是维护 颗线段树 那要怎么维护才能不爆空间呢? 我们发现尽管 那么大 但 相比 小得多 也就是说变动的点比较少 于是我们抓住这点
阅读全文
摘要:题目 城市中有一条长度为 的道路,每隔 的长度有一个公交车站,编号从 到 ,学校在 号车站的位置。其中每个公交车站(除了 号车站)有两个属性 和 ,代表从这个公交车站出发的公交车的性质。
阅读全文
摘要:分析 一个比较显然的方式是 设 表示达到空格所处位置为 且特殊格位置为 的状态的最少步数 一次可以交换空格和相邻格,代价为 , 转移即可 但确实时间无法接受 我们想到转移时 当且仅当空格和特殊格相邻时特殊格的
阅读全文
摘要:题目 到处都有 闲话 碰巧考场上出了 原题 然后这题自然而然想到 预处理一个点开始分别由 驾驶会走到的下一个点 然后用预处理的数组求答案 当然你会发现 这一问和后面的问的解法没什么区别 这都不是重点 很良心给暴力 分
阅读全文
摘要:分析 一个非常显然的单调队列+线段树的常规题 当然,扫描线一样一样的 但因为以前是直接动态开点的,所以这次打个离散化版本 #include<cstdio> #include<algorithm> #include<iostream> #define LL long long #de
阅读全文
摘要:可持久化并查集 性质 可持久化并查集 = 可持久化数组 + 并查集 = 主席树 + 并查集 时间复杂度 #include<cstdio> #include<iostream> using namespace std; const int N = 2
阅读全文