
算法解析
文章平均质量分 89
nan
Hellsegamosken
I want to put a ding in the universe.
展开
-
支持向量机之一:约束优化问题、硬间隔SVM
带约束的优化问题可以描述为以下形式minx f(x)s.t. ∀i,gi(x)≤0,∀j,hj(x)=0(1.1)\tag{1.1}\begin{aligned}\min_x\ &f(x)\\s.t.\ &\forall i, g_i(x)\leq 0,\\ &\forall j, h_j(x)=0&\end{aligned}xmin s.t. f(x)∀i,gi(x)≤0,∀j,hj(x)=0(1.1)称 f(x)f(x)f(x) 为目标函数,gi(x)g_i(x)gi(原创 2022-10-12 19:23:10 · 1192 阅读 · 0 评论 -
还算不错的五子棋伪AI
所以我为什么要用 python 写这个鬼玩意,导致现在搜三层有余搜四层搜不出来的尴尬境地。核心就是简单的 min-max 搜索。那么每次我们需要评估每次落子后局面的价值。对于五子棋来说,这个价值和有多少活二、活三之类棋型的数量有关,对于一个局部的某一方向上的棋型,我大概分成了十种情况,用 `number, potential, sides` 三个参数来进行描述,分别表示极大相连棋子数,是否有连成五子的潜力,以及自由端(没被地方堵死或者碰到边界)的数量。对于不同的三元组,给予不同的价值,那么整个局面的价值原创 2020-12-27 18:43:59 · 1701 阅读 · 0 评论 -
第一次简单实现神经网络
好久不见!推荐知乎上的三篇回答:一 二 三关于反向传播:https://my.oschina.net/90888/blog/1584009搞了一下午终于搞懂了神经网络的基本基本基本原理。上面说的 45 分钟搞懂真的是太搞了。于是临摹了某位大神的代码(一模一样)并做了些解释。这个两层的网络主要任务是根据读入的身高体重来判断男女。我们都知道,神经网络的每个节点的输出是前一层的每个节点的输出的加权和,加上某个偏置,再经过激活函数得到的。经过激活函数的目的是使运算变得不再线性,否则无论多少层的神经网络都可以原创 2020-10-15 10:16:04 · 738 阅读 · 1 评论 -
二项式反演与斯特林反演
二项式反演如果 f[m]=∑i=mn(ni)g[i]f[m]=\sum_{i=m}^n{n\choose i}g[i]f[m]=∑i=mn(in)g[i]根据二项式反演:g[i]=∑k=in(−1)k−i(ki)f[k]g[i]=\sum_{k=i}^n(-1)^{k-i}{k\choose i}f[k]g[i]=k=i∑n(−1)k−i(ik)f[k]好像是二项式反演的另一种...原创 2020-03-16 13:44:37 · 2490 阅读 · 1 评论 -
圆方树
神奇的建树方法。对每个点双新建一个方点,把这个点双里原来的边去掉,并把每个点连向这个方点。这样原图就是一棵树,而且这棵树有一些优美的性质: 1.原图的割点就是圆方树中度数大于 111 的圆点。 2.树上任意一条路径上圆点方点间隔分布。 3.如果圆点的 sizesizesize 为 111 ,那么一个圆点子树的 sizesizesize 和就是它“下面”的所有点的数量(用心灵去感受)。...原创 2019-05-14 20:51:57 · 2514 阅读 · 0 评论 -
两种特殊的矩阵(杨氏矩阵及其应用)
性质1.杨氏矩阵是这样的二维数组,满足 ai,j≤ai+1,j,ai,j≤ai,j+1a_{i,j}\leq a_{i+1,j},a_{i,j}\leq a_{i,j+1}ai,j≤ai+1,j,ai,j≤ai,j+1。以 a1,1a_{1,1}a1,1 为根的话,杨表满足堆的性质。以 a1,ma_{1,m}a1,m 为根,满足平衡树的性质。2.按照正常方式一个一个把元素插入杨表中...原创 2019-05-14 20:50:38 · 2045 阅读 · 0 评论 -
网络流总结
上下界网络流上下界可行流考虑把每条边必须经过的流量拆出来,那么就变成了某些边必须满流,求一组可行流。我们把必须满流的边拉出来,假想一个源汇 s,t,每条边起点连向 s,t 连向终点,跑 s 到 t 的最大流,若拉出来的边满流就找到了一组可行流。如果本来就有源汇,那么从 t 向 s 连流量正无穷的边,就转成无源汇网络流了。上下界最大流先求出一个可行流,把连向超级源汇的边删掉,再从 s 到 t...原创 2019-05-14 20:50:31 · 865 阅读 · 0 评论 -
回文树与几道毒瘤字符串题
1CF932G给定一个字符串 s,划分成 p1,...,p2kp_1,...,p_{2k}p1,...,p2k,满足 pi=p2k−i+1p_i=p_{2k-i+1}pi=p2k−i+1,求划分方案数。我们构造一个新的字符串:s1sns2sn−1...s_1s_ns_2s_{n-1}...s1sns2sn−1...,发现原问题等价于把新字符串划分成若干个回文串,并且每个回文串...原创 2019-05-14 20:50:19 · 956 阅读 · 0 评论 -
概率生成函数
概率生成函数随机变量 XXX 的概率生成函数为:F(z)=∑i=0∞P(X=i)ziF(z)=\sum_{i=0}^\infty P(X=i)z^iF(z)=i=0∑∞P(X=i)zi均值与方差E(X)=F′(1)E(X)=F'(1)E(X)=F′(1)V(X)=E(X2)−E(X)2=F′′(1)+F′(1)−F′(1)2V(X)=E(X^2)-E(X)^...原创 2019-05-14 20:50:06 · 7412 阅读 · 0 评论 -
min-max容斥
min-max 容斥简单来说,我们想要通过集合最小值计算出最大值:max(S)=∑T⊆Smin(T)⋅(−1)∣T∣−1\max(S)=\sum_{T\subseteq S}\min(T)\cdot (-1)^{|T|-1}max(S)=T⊆S∑min(T)⋅(−1)∣T∣−1证明是构造一个映射f(T),设 x 为最大值,f(T)→f(T⊕x)f(T)\rightarrow f(T\o...原创 2019-05-14 20:49:39 · 3113 阅读 · 0 评论 -
T73528 插头DP
有一个n*m的网格,每个格子可以向4个方向延伸出插头(边缘的格子不能向外延伸),每个格子每个方向上最多有1个插头,也可以没有。与同一条边相邻的两个格子在这个方向上的插头状态必须相同。现在已知一部分格子的插头数目(0~4),也有一些格子的插头数目是未确定的(用-1表示)。对于一种将所有未确定格子的插头数目确定下来的方案t,此时每个格子具体的插头方向仍不唯一,不妨将合法方案数记做ft。求 ∑ft2...原创 2019-05-14 20:49:32 · 617 阅读 · 0 评论 -
有关排列的dp题目
1有一个长度为 nnn 的排列 aaa,其中有一些位置被替换成了 -1。你需要尝试恢复这个排列,将 -1 替换回数字。求有多少种可行的替换方法,满足得到的是一个排列,且不存在 ai=ia_i = iai=i 的。n≤5000n\leq 5000n≤5000前置技巧:一个每行、每列只有一个棋子的棋盘,任意交换行列,得到的棋盘每行、每列只有一个棋子。在序列里填排列,某些位置有限制。想到把问题...原创 2019-05-14 20:48:52 · 781 阅读 · 0 评论 -
一类用 LCT 维护信息的题目
1给定一棵n个点的树,点有正点权,支持修改点权,查询带权直径。普通的 DP 需要维护最长链和次长链,带修改的话不容易动态维护。因此我们采用另一种方法:找两次最远点。LCT 维护的是:对于一棵 splay 的某个点,维护它子树对应的这条链的链顶的子树内,从这条链的端点出发的最长链(可能有点绕,很多 LCT 维护信息都是这么维护的)。为了维护这个信息,我们还需要维护每个虚儿子出发向(原树)子树的...原创 2019-05-14 20:48:18 · 1294 阅读 · 0 评论 -
暴力美学——分块
给定一棵树,每次操作一个点,如果这个点是白色就把他染黑,否则递归操作所有儿子。或者询问某个点的颜色(黑白)。把操作以 \sqrt n 划分成若干段,把每段涉及到的点建一棵类似虚树的东西,边权是两点之间的白点个数。修改操作在这棵树上改,复杂度 \sqrt n,每段处理完后 O(n) 修改到原树上。...原创 2019-05-14 20:47:06 · 860 阅读 · 0 评论 -
计数相关
Ramsey定理 环排列:(n−1)!(n−1)!(n-1)! 错排:f[i]=f[i−1]∗(i−1)+f[i−2]∗(i−1)f[i]=f[i−1]∗(i−1)+f[i−2]∗(i−1)f[i]=f[i-1]*(i-1)+f[i-2]*(i-1)1nnn 个男生,mmm 个女生,222 名老师,每两人不相同,他们站成一行,求女生不相邻并且老师不相邻的方案数。先把老师当做男生...原创 2019-05-14 20:46:57 · 669 阅读 · 0 评论 -
博弈论总结
博弈anti-nimnim游戏,不能操作者胜。先手必胜当且仅当:1.所有石子都为1,且有偶数堆。2.至少一堆数量大于1,sg函数异或不为0那么对于所有的anti-sg游戏,先手必胜当且仅当:1.sg函数异或为0且不存在sg>12.sg函数异或不为0且至少有一个sg>1every-sg每一轮里要操作所有能操作的子游戏。(nim游戏每一轮要从所有堆里取石子)由于胜负是...原创 2019-05-14 20:46:46 · 880 阅读 · 1 评论 -
支配树详解
什么是支配树?对于一张有向图,确定一个根,如果根到 x 的每条路径都经过 y,那么称 y 是 x 支配点。求出原图的一个 dfs 树,那么 x 的支配点一定在 x 到根的链上。如果每个点向自己深度最深的支配点连边,就构成了支配树。明确一些有向图 dfs 树的性质:1.树边总是由 dfn 小的点指向 dfn 大的点,非树边(两端点无祖先关系)总是由 dfn 大的点指向 dfn 小的点。2.若...原创 2019-05-14 20:46:32 · 4335 阅读 · 0 评论 -
几道构造小题
1在 nn 的网格上,由边界某个格子出发四连通经过所有格子一次且仅一次再回到边界上,要求拐弯次数至少有 n(n-1)-1 次。看起来无从下手。不知从何下手的题目一般有两种解决办法:1.考虑能否 缩小范围,递归处理。2.这道题显然是第一种。因为我们可以沿着左边缘和下边缘两列走一圈,递归套用 n-2 的构造方案。这道题目启发我们,很多时候 递归构造 是一个不错的选择。2给定一个度数序列...原创 2019-05-14 20:46:18 · 262 阅读 · 0 评论 -
Segment Tree Beats(吉司机线段树)
1给出 nnn 个数,qqq 次询问,求最大子段和,相同的数只算一次。(GSS2)在线不是很好做,我们离线下来,把询问按 rrr 升序排序,线段树上维护每个 lll 到 rrr 的和。如果预处理出每个数上一个出现的位置 pre[i]pre[i]pre[i],那么每次右端点右移相当于区间 [pre[i]+1,r][pre[i]+1,r][pre[i]+1,r] 加 a[i]a[i]a[i],查询...原创 2019-05-14 20:46:04 · 3620 阅读 · 0 评论 -
一类分割棋盘的 DP
1HDU5180给定一个 n*n 的棋盘,要在上面放 k 个车和任意多个王(车走直线,王走八连通),求有多少种方案使得车不能够吃王,车不能吃车,王不能吃王。观察到放置一辆车以后这一行、这一列都不能放旗子。因此 K 辆车占领 K 行 K 列。于是我们不直接枚举车的位置,可以枚举车占领了哪些行列,然后王只能放在每个被划分成的小矩形内。因此我们可以预处理每个大小的矩形内随便放王的方案数,然后枚举车...原创 2019-05-14 20:45:51 · 792 阅读 · 0 评论 -
计算几何
闵可夫斯基和两个点集 A,BA,BA,B 的闵可夫斯基和是 C={y+z∣y∈A,z∈B}C=\{y+z|y\in A,z\in B\}C={y+z∣y∈A,z∈B}两个凸包的闵可夫斯基和也是凸包,两个指针 for 一遍搞起来即可。#include<bits/stdc++.h>#define ll long long#define pb push_back#define f...原创 2019-05-14 20:45:43 · 554 阅读 · 0 评论 -
线段树维护单调栈
单点修改,维护元素个数。#include<bits/stdc++.h>#define ll long longusing namespace std;double Max[400010];int sum[400010];inline int read(){ char c=getchar();int x=0,flag=1; while(!isdigit(c)...原创 2019-05-14 20:45:25 · 809 阅读 · 0 评论 -
几类网络流的建模
1区间 kkk 覆盖问题有一些区间,选择一个区间会产生一些收益。要去每个点覆盖它的区间最多不超过 kkk 个。一开始的想法是源点连每个区间代表的点,区间代表的点连向序列里的每个数,每个数连向汇点。发现这样无法限制题目要求,因为选择一个区间实际上对应很多边流量同时+1,网络流并不能处理这种情况,这是典型的“一对多”问题。尝试更改建图策略,对于一个区间 [l,r][l,r][l,r],我们连边...原创 2019-05-14 20:45:00 · 1134 阅读 · 0 评论 -
一类平衡树问题(重量平衡树及其应用)
重量平衡树是用于维护大小关系的平衡树,它能按照全序关系给每个数分配一个权值,因此我们只需要比较两个数的权值就可以快速比较他们的大小了。具体做法是给平衡树的每个子树分配一个实数开区间,令根的权值等于区间的 mid,然后把 (l,mid),(mid,r) 分别分到左右子树。由于平衡树深度是 log\loglog 级别的,因此精度不会有问题。唯一的问题是旋转操作可能会影响权值的分配。因此我们需要使用...原创 2019-05-14 20:44:51 · 1083 阅读 · 0 评论 -
数论(min_25筛)
类欧几里得算法扩展欧拉定理(对于a,p不互质的情况计算a%p):https://blog.youkuaiyun.com/hzj1054689699/article/details/80693756二次剩余:对于n整数a若存在整数x 满足 x^2%n=a那么称a是mod n 的二次剩余判定:当且仅当 a^(p-1)/2=1引理:对于奇素数p下的二次剩余n,有两个不同的x满足x^2%p=n一个奇素...原创 2019-05-14 20:44:28 · 1600 阅读 · 0 评论 -
决策单调性优化DP
四边形不等式如果一个 dp 数组满足四边形不等式 f[a,c]+f[b,d]<=f[a,d]+f[b,c]f[a,c]+f[b,d]<=f[a,d]+f[b,c]f[a,c]+f[b,d]<=f[a,d]+f[b,c] (a<b≤c<da<b\leq c&l原创 2019-05-14 20:43:33 · 2353 阅读 · 0 评论 -
边分治以及一些树上毒瘤题
原创 2019-05-14 20:42:26 · 1038 阅读 · 0 评论 -
图论网络流
图论网络流1给定一棵树,每次可以选一个叶子删掉。同时有 mmm 个限制 (u,v)(u,v)(u,v) 表示 uuu 必须在 vvv 之前删掉。求可能最后一个被删掉的点的集合。如果有一个 u→vu\rightarrow vu→v 的限制,那么以 vvv 为根 uuu 的子树都不能选。之后把不能选的点之间定向,加上限制的边,如果有环就无解,否则可以证明解就是剩下的点。2给定一个字符串集合,...原创 2019-05-14 20:41:55 · 694 阅读 · 0 评论 -
关于长链剖分
看这样一个题(dsu on the tree): 给你一棵树,每个节点有一种颜色,问你每个子树x的颜色数最多的那种颜色,如果颜色数相同,那么种类数相加。 考虑最暴力的暴力,对于每个点遍历它的子树,统计答案,然后再撤销。但是这样太傻了,每个点显然可以继承一个儿子的信息,我们选择继承它的重儿子的信息,只 dfs 轻儿子。这样对于每个点,会被 dfs 它到根之间轻边数量次。所以复杂度是 O(nlog...原创 2018-09-07 14:11:28 · 2098 阅读 · 2 评论 -
群论
1一张圆桌周围 nnn 把椅子,留下 kkk 把,且任意两个椅子不相邻。求本质不同的方案数。如果对于两个方案,其中的一个不能通过旋转或翻转得到另一个,那么称他们本质不同。根据 burnside 引理,等价类数量等于置换不动点数量的平均数。我们枚举一个旋转的置换,例如旋转了 xxx 步,那么在这个置换下就有 gcd(x,n)gcd(x,n)gcd(x,n) 个循环节,长度都为 d=ngcd(...原创 2018-09-01 12:35:56 · 2747 阅读 · 0 评论 -
动态dp
题目大意:一棵树,点有点权,每次修改点权,询问最大独立集。不带修改的 dp 不难。动态 dp 的套路就是把转移写成矩阵的形式,然后用线段树维护。我们时刻维护一个数组 g[u]g[u]g[u],表示 uuu 不从重儿子转移过来的 dp 数组。这样修改一个权值只会影响到 loglog\log 个 g[u]g[u]g[u](他自己和到根的每条重链的下端点)。假设考虑答案的 dp 数组是 fff,我们...原创 2018-08-20 21:16:27 · 1475 阅读 · 2 评论 -
网络流
1题意:给定一个 n∗mn∗mn*m 的网格,每个位置要选择一个 000 到 HHH 中的值,选择每个值都有一个代价,相邻的取值不能超过 DDD,最小化代价。每一个格子建 HHH 个点,(x,y,z)(x,y,z)(x,y,z) 向 (x,y,z+1)(x,y,z+1)(x,y,z+1) 连 w(x,y,z+1)w(x,y,z+1)w(x,y,z+1),SSS 向 (x,y,1)(x,y,...原创 2018-08-18 18:08:11 · 259 阅读 · 0 评论 -
[hdu 4348] To the moon
主席树区间修改模板,用了标记永久化。#include<cstdio>#include<iostream>#define ll long longusing namespace std;int root[3000010],rs[3000010],ls[3000010],add[3000010];ll sum[3000010];int a[3000010],to...原创 2018-07-17 19:04:32 · 266 阅读 · 0 评论 -
线性代数
关于排列: 对换改变排列的奇偶性。 在全部的 nnn 阶排列中,奇偶排列各占一半。行列式∑j1j2…jn∈Psgn(j1j2…jn)a1j1a2j2…anjn∑j1j2…jn∈Psgn(j1j2…jn)a1j1a2j2…anjn\sum_{j_1j_2\dots j_n\in P}sgn(j_1j_2\dots j_n)a_{1j_1}a_{2j_2}\dots a_{n...原创 2018-06-11 20:57:00 · 1025 阅读 · 0 评论 -
概率与期望
BSGS1题意:给定 a,b,pa,b,pa,b,p 求 ax=b&amp;nbsp;(mod&amp;nbsp;p)ax=b&amp;nbsp;(mod&amp;nbsp;p)a^x=b~(mod~p) 的最小正整数解,ppp 为质数,保证有解。显然 x&amp;lt;px&amp;lt;pxt=p–√t=pt=\sqrt p, 如果我们能找到一组 (c,d)&amp;nbsp;原创 2018-06-08 22:14:19 · 1430 阅读 · 0 评论 -
数位dp
1[SCOI2014]方伯伯的商场之旅 题意:nnn 个人,每个人面前有几堆石子。第 iii 个人面前的第 jjj 堆的石子的数量是 iii 写成 KKK 进制后的第 jjj 位。每次操作可以选择一个人面前的两堆石子,将其中的一堆中的某些石子移动到另一堆,代价是移动的石子数量 * 移动的距离。要把位置在 [L,R][L,R][L, R] 中的每个人的石子都合并成一堆石子,求最小代价。数位...原创 2018-06-07 16:33:34 · 417 阅读 · 0 评论 -
树形dp
树形dp1nnn 个点的树,边有边权,把其中kkk 个点涂成黑色,其余的点涂成白色,最大化:每两个黑点间距离和+每两个白点间的距离和。直接设 f[i][j]f[i][j]f[i][j] 表示 iii 子树里选 jjj 个黑点的最大值。然后发现不能转移…考虑到每条边是独立的,因此这样设状态:令 f[i][j]f[i][j]f[i][j] 表示 iii 的子树里选 jjj 个黑点最...原创 2018-06-02 21:27:13 · 394 阅读 · 0 评论 -
Nim游戏和SG函数
Nim游戏从一个问题进入。描述今天我们要认识一对新朋友,Alice与Bob。 Alice与Bob总是在进行各种各样的比试,今天他们在玩一个取石子的游戏。 在这个游戏中,Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有Ai个石子。 每一次行动,Alice和Bob可以选择从一堆石...转载 2018-05-22 21:15:49 · 922 阅读 · 0 评论 -
【5.18 提高班小记】数据结构&&线性基
先挖坑: 1.fhq treap 2.左偏树(可持久化可并堆) 3.重量平衡树。 4.拟阵。1维护一个序列,支持: 1.单点修改。 2.区间翻转。 3.给定 [l,r],[l,r],[l,r], 执行 swap(ai,ai+1),&amp;nbsp;swap(ai+2,ai+3)...swap(ai,ai+1),&amp;nbsp;swap(ai+2,ai+3)...swap(a_i,a_{...原创 2018-05-19 14:50:40 · 294 阅读 · 0 评论 -
莫比乌斯反演与杜教筛
以下内容均来自TA爷课件,我只是改了几个小的地方qwq关于除法⌊ni⌋⌊ni⌋\left\lfloor\frac{n}{i}\right\rfloor 只有 O(n−−√)O(n)O(\sqrt n) 种取值。 2.对于iii,⌊n⌊ni⌋⌋⌊n⌊ni⌋⌋\left\lfloor\frac{n}{\left\lfloor\frac{n}{i}\right\rfloor}\right...转载 2018-04-14 22:14:38 · 262 阅读 · 0 评论