随笔分类 -  杂算法

摘要:袭击 给出 2n 个点,求在前 n 个和后 n 个点中各选一个点的距离的最小值是多少。 分治 出处:《算法竞赛进阶指南》 题解: 先考虑只有一种点,怎么求两两距离的最小值。 分治,整体的最小距离 ans=min(左半边的最小值,右半边的最小值,左右之间的最小值\() 阅读全文
posted @ 2024-02-15 11:21 FLY_lai 阅读(4) 评论(0) 推荐(0) 编辑
摘要:主要有:剪枝、双向搜索、启发式搜索、迭代加深。 【剪枝】 拼接正方形 一道水题。基本想法:枚举每根木棍属于哪条边,O(4m4!)。 但是这太慢了,我们剪枝:如果一条边目前的累计长度 >sum4,就返回 false。 于是我们就通过了。 运动员最佳 阅读全文
posted @ 2024-02-15 11:15 FLY_lai 阅读(426) 评论(0) 推荐(0) 编辑
摘要:【单调栈】 柱状图最大矩形: 首先我们有一个最简单的方法:O(n3) 枚举左右端点,然后再求中间的最小值,最后乘起来得到这段矩形组成的最大面积。 求最小值,我们考虑到ST表,我们可以用它优化到 O(n2)。 接下来我们考虑转换枚举思路: 我们发现,一个矩形的大小,由它的左右端点, 阅读全文
posted @ 2024-02-15 11:15 FLY_lai 阅读(11) 评论(0) 推荐(0) 编辑
摘要:【引入】 分(而)治(之)。 把一个问题分解成规模更小的子问题,从而降低复杂度的算法。 【归并排序】 我们用选择排序,复杂度是 O(n22)。 但是如果我们把数组分成两半,分别选择排序,再归并起来,复杂度就降低为 O(n24+n),几乎快了一半 阅读全文
posted @ 2024-02-15 11:09 FLY_lai 阅读(10) 评论(0) 推荐(0) 编辑
摘要:【双指针】 双指针(two-pointer method) 这里的指针不是指向内存地址的指针,而是一个类似于光标的、指向一个位置的指针。 双指针是一个优化时间复杂度的思想。 【例子1】 两数之和 二重循环当然可以,但是太慢了。 于是我们可以使用双指针优化。 样例: 7 7 1 3 4 8 6 9 5 阅读全文
posted @ 2024-02-15 11:08 FLY_lai 阅读(14) 评论(0) 推荐(0) 编辑
摘要:E 题意: 给定一个 n 面骰,长度 n 的数组 a 和一个初始为 0 的变量 x。 每次投掷骰子,等概率获得 1n 中的一个数 p。若 px,结束;否则 xp 且总收获 \(S\lef 阅读全文
posted @ 2024-02-08 18:43 FLY_lai 阅读(9) 评论(0) 推荐(0) 编辑
摘要:【哈希】 哈希可以分成两块:哈希函数和哈希表。 哈希函数是一种对应关系,它可以把任意类型映射为一个不太大的整数。 例如字符串,我们可能希望在字符串上记录一些属性。但是字符串不能当下标,那我们就只能加个大常数用 map。 这时,哈希函数出场了!如果我们有一个哈希函数 h() 可以把一个字符串 阅读全文
posted @ 2024-02-01 09:46 FLY_lai 阅读(21) 评论(0) 推荐(0) 编辑
摘要:【什么是虚树】 OI-wiki 如果题目里有一些关键点,而整棵树规模过大,我们可以考虑使用虚树来重新建树,以减少树的规模。 虚树:一颗树,树中包含所有关键点,以及任意多个关键点的 LCA。 可以发现在这颗虚树中,任意两个关键点的 LCA 都不变(还是对应原树的结点),并且只要我们把虚树中每条边的距离 阅读全文
posted @ 2024-02-01 09:44 FLY_lai 阅读(17) 评论(0) 推荐(0) 编辑
摘要:郑哥狂喜 引入:静态区间第 k 小。给定一个数组和若干个询问,每次询问要查询某个区间中第 k 小的数。 这里介绍一种整体二分的算法。 如果只有一个询问,有一种二分的算法: 初始左右端点设为整个数组的最小值和最大值,不断二分。看一下二分值 mid,比 mid 小的数有 \(t\ 阅读全文
posted @ 2024-02-01 09:42 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:这是一种线段树的高级玩法:在时间轴上运用。每个时间节点作为一个叶子,在一个时间区间内的标记,就可以影响到这个区间内的所有时刻。 题目传送门 建立一颗基于询问的线段树,也就是说线段树的每个结点都代表区间内的一些询问。 因为删除操作不好搞,我们反向考虑,求每个询问存在哪些边。 我们可以对每条边,求出它是 阅读全文
posted @ 2024-02-01 09:41 FLY_lai 阅读(6) 评论(0) 推荐(0) 编辑
摘要:例题:CF600E 有一种暴力的想法是先 DFS 每个结点,再对每个结点 DFS 它的子树,用 cnt 数组记录每个结点子树的颜色出现情况。复杂度 O(n2)。 一个平平无奇的优化:第一层 DFS 的时候,把重儿子放到最后搜索。在搜索重儿子的子树后,不清空 cnt 数组。然 阅读全文
posted @ 2024-02-01 09:36 FLY_lai 阅读(7) 评论(0) 推荐(0) 编辑
摘要:有 n 个 01变量 x1xn,同时有 a1an,b1bn. 同时有约束条件:用集合 S 表示,这个 S 中每一个元素表示一个 x1xn 的取法。(平时见到的题不咋有约束) 我们要给 \(x_1\ 阅读全文
posted @ 2024-02-01 09:33 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示