08 2024 档案
摘要:点分治 P3806 【模板】点分治 1 P3806 【模板】点分治 1 我们先随意选择一个节点作为根节点 ,所有完全位于其子树中的路径可以分为两种: 一种是经过当前根节点的路径 一种是不经过当前根节点的路径。 对于经过当前根节点的路径,又可以分为两种: 一种是以根节点为
阅读全文
摘要:ACM算法模版 数据结构 树状数组 #include<bits/stdc++.h> #define int long long using namespace std; const int N=5e5+100,mod=998244353; typedef long long ll; typedef
阅读全文
摘要:主席树 主席树全称是可持久化权值线段树,即对权值开线段树,参见 知乎讨论。 引入 先引入一道题目:给定 个整数构成的序列 ,将对于指定的闭区间 查询其区间内的第 小值。 你该如何解决? 一种可行的方案是:使用主席树。 主席树的主要思想就是:保存
阅读全文
摘要:引入 扫描线一般运用在图形上面,它和它的字面意思十分相似,就是一条线在整个图上扫来扫去,它一般被用来解决图形面积,周长,以及二维数点等问题。 Atlantis 问题 题意 在二维坐标系上,给出多个矩形的左下以及右上坐标,求出所有矩形构成的图形的面积。 解法 根据图片可知总面积可以直接暴力即可求出面积
阅读全文
摘要:树链剖分的思想及能解决的问题 树链剖分用于将树分割成若干条链的形式,以维护树上路径的信息。 具体来说,将整棵树剖分为若干条链,使它组合成线性结构,然后用其他的数据结构维护信息。 树链剖分(树剖/链剖)有多种形式,如 重链剖分,长链剖分 和用于 Link/cut Tree 的剖分(有时被称作「实链剖分
阅读全文
摘要:线段树模版:从入门到入坟 线段树——单点修改 1.求区间最值 #include<bits/stdc++.h> #define int long long using namespace std; const int N=200010; typedef long long ll; struct nod
阅读全文
摘要:参考文章: 树上启发式合并 [dsu on tree]树上启发式合并总结 树上启发式合并の详解 启发式合并 启发式算法是什么呢? 启发式算法是基于人类的经验和直观感觉,对一些算法的优化。 举个例子,最常见的就是并查集的启发式合并了,代码是这样的: void merge(int x, int y) {
阅读全文
摘要:参考博客: 最近公共祖先 算法详解之最近公共祖先(LCA) 瓶颈生成树 Tarjan算法 #include<bits/stdc++.h> #define int long long using namespace std; const int N=5e5+10; using i64 = long l
阅读全文
摘要:莫队 参考文章: 莫队细讲——从零开始学莫队 莫队算法——从入门到黑题 oiwiki--普通莫队 莫队简介 莫队算法是由莫涛提出的算法。在莫涛提出莫队算法之前,莫队算法已经Codeforces 的高手圈里小范围流传,但是莫涛是第一个对莫队算法进行详细归纳总结的人。莫涛提出莫队算法时,只分析了普通莫队
阅读全文
摘要:AtCoder Beginner Contest 366题解 A - Election 2 题意: 张票,目前投了 给高桥, 给青木。 问剩余票随便分配,是否都是一个结局。 思路: 将剩下的票全都给同一个人,看看是否局面发生变化 代码: #include<bits/st
阅读全文