零碎算法一二
文章平均质量分 50
零碎算法一二
ZhgDgE
这个作者很懒,什么都没留下…
展开
-
【oiwiki-模拟退火】
模拟退火解决问题:求多峰 / 多谷函数的最值。需要满足条件:先用一句话概括:模拟退火时我们有三个参数:初始温度T0,降温系数d,终止温度Tk。其中T0是一个比较大的数,d是一个非常接近1但是小于1的数,Tk是一个接近0的正数。首先让温度TT0,然后进行一次转移尝试,再让Td⋅T。当TTk时模拟退火过程结束,当前最优解即为最终的最优解。注意为了使得解更为精确,我们通常不直接取当前解作为答案,而是在退火过程中维护遇到的所有解的最优值。转载 2023-04-14 10:28:10 · 234 阅读 · 0 评论 -
【启发式分治】启发式合并的逆思想
我们选择一个区间中的某个下标作为分界点(分治相关算法中选择的分界点都是中间点),统计左右两子区间的数对个数。,如果存在一个只出现一次的数字,那么横跨这个数字的子区间一定是好的,不用考虑,只需考虑分割出来的两个子区间。这里的核心是需要从两端向中间枚举,这样可以保证枚举的次数一定小于总元素个数的二分之一。计算数对两端位于分界点的异端,则枚举长度更小的区间内的元素,计算即可。的元素,然后在另一个区间内统计数对的个数。先回想一下启发式合并求序列属性的方法以属性为序列满足性质的数对个数举例。且区间内元素互不相同。..原创 2022-07-23 00:39:52 · 247 阅读 · 0 评论 -
template的快读与快写
压行:原创 2022-06-15 13:26:54 · 106 阅读 · 0 评论 -
利用时间戳的hash函数
转载:AcWing 4412. 构造数组 custom_hash利用时间戳的hash函数,反卡struct custom_hash { static int splitmix64(int x) { x ^= x << 13; x ^= x >> 7; x ^= x << 17; return x; } size_t operator () (int x) const {转载 2022-04-24 14:41:48 · 659 阅读 · 0 评论 -
【swap】对象是STL容器时的时间复杂度
今天看启发式合并的时候发现一个题解里面直接对 set 进行 swap,就好奇其时间复杂度。测了一下,容器的 swap 应该是 O(1) 的。vector 的 swap 时间近似 O(1)set, map 的 swap 时间常数稍大,是 vector 的 2 倍左右string 比 vector 要快得多priority_queue 也可以 swapset 的测试代码:#include<bits/stdc++.h>using namespace std;#define rep原创 2022-03-02 19:57:16 · 2199 阅读 · 1 评论 -
【双指针模板】
只在牛客过过一题,不保证正确性。应用:在一个非严格递增(非严格递减同理)离散序列中,找到对应值的区间的左右端点。举例:问一个序列中有多少个子序列满足和刚好等于 k 。模板:固定左端点,右移两个右端点,要找到右端点的有效区间,则 [j1,j2] 即为所求。注意要排除不存在有效区间的情况。 for(int i = 0, j1 = 1, j2 = 1; i <= n; i ++ ) { while(j1 < n && !(s[j1] - s[i]原创 2022-02-24 23:09:15 · 219 阅读 · 0 评论 -
OJ 万能头
#ifndef _GLIBCXX_NO_ASSERT#include <cassert>#endif#include <cctype>#include <cerrno>#include <cfloat>#include <ciso646>#include <climits>#include <clocale>#include <cmath>#include <csetjmp>#i原创 2022-02-19 16:26:31 · 191 阅读 · 0 评论 -
【待补题】
放一些待补的题2021CCPC桂林 Problem F. Illuminations II圆与三角形的面积交(三角形一点位于圆心)2021CCPC女生赛 Vor图【杂题】第一题原创 2021-11-07 17:48:52 · 123 阅读 · 0 评论 -
【悬线法】解决最大子矩阵问题
学习博客: 【算法学习笔记】浅谈悬线法对于一般的最大矩形题目,框架大概是这样的:const int N = 100010;int n, a[N], l[N], r[N];ll ans;int main() { while (scanf("%d", &n) != EOF && n) { ans = 0; for (int i = 1; i <= n; i++) scanf("%d", &a[i]), l[i] = r原创 2021-10-19 21:32:47 · 158 阅读 · 0 评论 -
【三分法】题集
文章目录[Line belt](http://acm.hdu.edu.cn/showproblem.php?pid=3400)[Party All the Time](http://acm.hdu.edu.cn/showproblem.php?pid=4355)[【整数三分】CF1355E - Restorer Distance](https://codeforces.com/problemset/problem/1355/E)Line belt思路: 三分套三分。当AB上的离开点E固定时,当进入点F原创 2021-10-07 18:01:40 · 319 阅读 · 0 评论 -
【模板】三分法
讲解链接:二分法、三分法 --算法竞赛专题解析(1)三分法作用: 三分法可以求单峰函数(单调函数)的极值(最值)。过程:当函数为单峰凸函数,mid1和mid2哪边的函数值更小,哪边的区间就收缩,因为极值点一定存在于此点的内侧。当函数为单谷凹函数,mid1和mid2哪边的函数值更大,哪边的区间就收缩,因为极值点一定存在于此点的内侧。当函数退化为单调函数时,三分法也可以求最值。例如三分求单峰凸函数的极大值,当凸函数退化为单调函数时,函数被看作凸函数的半边,求出来的就是最大值。实数原创 2021-10-07 18:01:01 · 220 阅读 · 0 评论