知识点 - 树的树边、前向边、后向边 知识点 - 树的树边、前向边、后向边解决问题类型:图论构造、图论性质实现树边,前向边,后向边,横叉边,应该说,不是一个图本身有的概念,应该是图进行DFS时才有的概念。图进行DFS会得到一棵DFS树(森林),在这个树上 才有了这些概念。对图进行DFS,可以从任意的顶点开始,遍历的方式也是多样的,所以不同的遍历会得到不同的DFS树,进而产生不同的树边,前向边,后向 边,横叉边。所以这4种边,是...
知识点 - 约瑟夫环(公式总结) 知识点 - 约瑟夫环(公式总结)一、nnn个人,1至m报数,问最后剩下来的人的编号公式f(n,m)=(f(n−1,m)+m)%nf(n,m) = (f(n-1,m)+m)\%nf(n,m)=(f(n−1,m)+m)%nf(0,m)=0f(0,m) = 0f(0,m)=0复杂度 O(n)O(n)O(n)代码typedef long long ll;ll calc(int n, ll ...
知识点 - 点分治 知识点 - 点分治解决问题类型:树上路径问题的工具,举个例子:给定一棵树和一个整数 kk ,求树上边数等于 kk 的路径有多少条实现原理如图,假设我们选出一个根 RootRootRoot ,那么答案路径肯定是要么被一个子树所包含,要么就是跨过 RootRootRoot,在黑子树中选择一部分路径,在红子树中选择一部分路径,然后从 RootRootRoot 处拼起来形成一条答案路径...
题解 - 母函数 卷积 二项式系数 Sequence @ HDU multi #1 题解 - 母函数 卷积 二项式系数 Sequence @ HDU multi #1题意hdu6589给定n个数aia_iai数组,令bi=∑j=i−k⋅xaj(0≤x,1≤j≤i) where k∈{1,2,3}b_i=\sum_{j=i-k\cdot x}a_j(0\le x,1\le j\le i) \mathrm{\ where\ }k\in\{1,2,3\}bi...
知识点 - 虚树 知识点 - 虚树解决问题类型:利用虚树,可以对于指定多组点集 SSS 的询问进行每组 O(∣S∣log2n+f(∣S∣))O(|S|log_2n+f(|S|))O(∣S∣log2n+f(∣S∣)) 的回答,其中 f(x)f(x)f(x)指的是对于树上有 xxx 个点的情况下单组询问这个问题的时间复杂度。可以看到,这个复杂度基本上(除了那个 log2nlog_2nlog2n以外)与 nnn ...
知识点 - 杜教筛 知识点 - 杜教筛解决问题类型:积性函数前缀和,做法是 将原函数和恒等函数卷积得到F,对F求前缀和并使用微扰法求出原函数前缀和。模板://注意mp<int,ll>//一般很卡常,可以考虑换语言交ll GetSum(int n) { // 算 f 前缀和的函数 ll ans = f_g_sum(n); // 算 f * g 的前缀和 // 以下这个 for 循环是整...
题解 - GCPC 2018 M - Mountaineers (启发式合并) 题解 - GCPC 2018 M - Mountaineers (启发式合并)题目链接: M - Mountaineers题意给你一个m∗nm*nm∗n 的格子矩阵,每个格子都填着一个数字,在每个格子上都可以上下左右的移动。现在有QQQ个询问,询问所有连接两个点之间路径上最大值最小的价值是多少。数据范围: 1≤m,n≤500,1≤Q≤1051 \le m,n \le 500,1 \le ...
知识点 - 数论函数导论 知识点 - 数论进阶abstract:整除分块,积性函数,线性筛,莫比乌斯反演,迪利克雷卷积,积性函数前缀和,0.引入Gym - 101485D debugging(之后会发现,这道dp的转移方程和杜教筛的转移如出一辙。)题意有一份包含1个 bug 的n( 1≤????≤1e6)行代码,运行一次到崩溃需要的时间为 r( 1≤????≤1e9)。你可以任意行添加 printf 语句来输出调试,即你...
知识点 - 线性筛 知识点 - 线性筛原理:筛质数:埃氏筛法过程中,每个数会被其所有质因数筛一遍,导致O(nlogn)O(nlogn)O(nlogn)的复杂度。for (int i = 2; i <= n; i++) if (is_prime[i] && (long long)i * i <= n) { for (int j = i * i; j <= n;...
知识点 - CDQ分治 知识点 - CDQ分治解决问题类型:三维偏序问题前置知识树状数组分治思想实现一. cmp函数cmp函数在第一比较元素相等时应该返回后面元素较大的原来的CDQ分治是可以不严格的,所以在完全相等的时候我们的操作是直接将其合并为一个节点。而现在不严格时,为了不让相同元素进行干扰,我们就让大的在前面,这样就一定不会有问题了。二. 树状数组要修改现在要求树状数组的功能时 dp[i...
知识点 - 整除分块 知识点 - 整除分块1.约数个数令τ(n)\tau(n)τ(n)为n的约数个数,求其前缀和。解析若n的质因数分解为n=p1e1⋅p2e2⋯pkekn=p_1^{e_1} \cdot p_2^{e_2} \cdots p_k^{e_k}n=p1e1⋅p2e2⋯pkek,则τ(n)=(e1+1)⋅(e2+1)⋯(ek+1)\tau(n) = (e_1 + 1) \cdot (e...
分块打表 H. The Nth Item @ The 2019 Asia Nanchang First Round Online Programming Contest 分块打表 H. The Nth Item @ The 2019 Asia Nanchang First Round Online Programming Contest题意1e7次询问f(n)%998244353: n<1e18f(0)=0,f(1)=1;f(i)=3f(i−1)+2f(i−2)f(0)=0,f(1)=1;\\f(i)=3f(i-1)+2f(i-2)\\f(0)=...
知识点 - 李超树 知识点 - 李超树解决问题类型:李超树是一种线段树的应用,主要应用场合为:单点集合域,区间等差插入,求单点最值。动态地插入多条二维线段,询问某个xxx对应的yyy值的最值。修改[L,R,b,k][L,R,b,k][L,R,b,k],对于第i∈[L,R]i∈[L,R]i∈[L,R]个集合,插入b+(i−L)kb+(i−L)kb+(i−L)k,询问某个集合的最大值。实现每个线段树结...
知识点 - 支配树 知识点 - 支配树解决问题类型:有向图中求解,必经点,必经边。前置知识学会构建dfs树,对于dfn序有简单的了解对于树上两点路径有初步的认识,知道LCA的概念知道带权并查集的合并方法(合并子树时需要使用)概念支配点很久很久以前,有一张有向图,有向图有一个起点SSS,有一个叫小X的强盗,占据一个点拦路打劫。当小X占据了x点后,若从SSS出发就到不了yyy点了,那么xxx就是yy...
二维偏序 I query @ The Preliminary Contest for ICPC Asia Xuzhou 2019 二维偏序 I query @ The Preliminary Contest for ICPC Asia Xuzhou 2019I query @ The Preliminary Contest for ICPC Asia Xuzhou 2019 题意1e5个数1~n,1e5个询问(l,r)(l,r)(l,r),问(l,r)(l,r)(l,r)中有几对数(i,j)(i,j)(i,j)满足mi...
四面体展开 Rendezvous on a Tetrahedron @ 2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest 四面体展开 Rendezvous on a Tetrahedron @ 2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest题意Rendezvous on a Tetrahedron有一个正四面体,两只虫子在上面沿直线爬行,爬过正四面体的边时它与边的夹角不变。给出它们爬行的方向和距离,问它们最后是否在一个面上。银牌题。分析按照套路把正四面体...
题解 CF - 101986 F Pizza Delivery (最短路+DAG必经点) 题解 CF - 101986 F Pizza Delivery (最短路+DAG必经点)题目链接: https://codeforces.com/gym/101986题意:给你NNN个点,MMM条边的有向图,无重边自环,每条边都有边权wiw_iwi,设置起点为1,终点为2,现在要求对每条边询问一下:如果将这条边的方向取反,即原来是u→vu \rarr vu→v现在修改为v→uv\rarr...
题解 - 牛客多校第八场 H Playing games (想法+Fwt) 题解 - 牛客H Playing games (想法+Fwt)题目链接:https://ac.nowcoder.com/acm/contest/146/H题意给出N个数字,现在要求取出最少的数字,使其数组剩下的值异或和为0数据范围:1≤N,Val≤5∗1051\le N,Val \le 5*10^51≤N,Val≤5∗105思路根据线性基的思想,我们不难想到,最多取出19个数字,一定...
圆的凸包 误差分析 B Craters @ 2017 ECNA Regional Contest 圆的凸包 误差分析 B Craters @ 2017 ECNA Regional Contest题意Craters200个圆,求把它们围起来所需要栅栏的最小长度,要求栅栏和圆距离不小于10.捧杯题。分析首先画一下,猜想原问题等价于将每个圆半径+10后,求将每个圆包起来的”凸包“周长。最直接的做法就是每个圆两两之间作切线,求切点,对所有切点作凸包。然后将圆弧加上去。此做法要求圆圆切线...
知识点 - 快速沃尔什变换 知识点 - 快速沃尔什变换解决问题类型:FWTFWTFWT是用来处理位运算(异或、与、或)卷积的一种变换。位运算卷积是什么?形如f[i]=∑j⊕k==ig[j]∗h[k]f[i]=∑_{j⊕k==i}g[j]∗h[k]f[i]=∑j⊕k==ig[j]∗h[k]的卷积形式(其中⊕⊕⊕为位运算)就是位运算卷积。如果暴力枚举的话,时间复杂度是O(n2)O(n^2)O(n2),但运用FWTFWTFW...