
-----常用算法-----
常用算法
ハルカナソラヘ
果てなく続いて行く、
生きとし生けるものは。
抗うことの出来ない、
散り行く因縁抱いて。
記憶の隙間で ただ微笑む瞳が 儚く零れた、
運命さえ 光で照らして行く。
闇を離した この手を繋ぐ、
穢れなき宵 咲き誇るように。
夢から覚めた 昨日の声を、
ずっと聞かせて 独り歩いて行く。
展开
-
20200915 专题:舞蹈链(DLX)
总览:解决覆盖问题用十字交叉双向循环链表优化搜索复杂度T1 P4929 【模板】舞蹈链(DLX)思路:板子题代码:#include <bits/stdc++.h>using namespace std;#define re register#define LL long longtypedef unsigned int uint;typedef unsigned long long ull;#define pb push_back#define mp make_p原创 2020-09-17 10:41:19 · 146 阅读 · 0 评论 -
20200912 专题:斯坦纳树
总览:给定一个包含 nnn 个结点和 mmm 条带权边的无向连通图 G=(V,E)G=(V,E)G=(V,E)再给定包含 kkk 个结点的点集 SSS,选出 GGG 的子图 G′=(V′,E′)G'=(V',E')G′=(V′,E′),使得:S⊆V′S\subseteq V'S⊆V′G′G'G′ 为连通图E′E'E′ 中所有边的权值和最小。你只需要求出 E′E'E′,中所有边的权值和这个问题可以用状压 DP 来解决首先容易发现一个结论:答案的子图一定是树证明:如果答案存在环,则删去环原创 2020-09-13 22:48:13 · 211 阅读 · 0 评论 -
20200912 专题:模拟退火
总览:随机出一个解如果比当前答案更优,更新答案如果不优,有选择地接受板子:inline void SA() { node now = ans; double T = 2000, delta = 0.996;//温度,退火参数 while (cp(T, 1e-10) == 1) { node k; get(k); double c=k-ans; if (cp(c, 0) == -1) now = ans = k; else if (ex原创 2020-09-13 22:23:45 · 122 阅读 · 0 评论 -
20200912 SCOI模拟T2(线性基+树链剖分)
T2 P3292 [SCOI2016]幸运数字思路:先考虑序列上的情况,可以线性基维护再考虑树上的情况,可以树剖维护,合并两个区间时,暴力的将一个区间的所有数插到另一个线性基里时间复杂度:O(nlog4n)O(nlog^4n)O(nlog4n)(树剖nlog2nnlog^2nnlog2n×\times×暴力合并线性基log2nlog^2nlog2n )代码:#include <bits/stdc++.h>using namespace std;#define LL long l原创 2020-09-12 16:56:33 · 144 阅读 · 0 评论 -
20200909 SCOI模拟T3(计数)
T3 P5481 [BJOI2015] 糖果思路:发现找出一排的方案数 SSS 后,答案为 PSnP_S^nPSn考虑如何找出一排的方案数容易发现 dpdpdpfi,jf_{i,j}fi,j 为 iii 个数,jjj 列的方案数fi,j=fi−1,j+fi,j−1即f1,n=1,fn,1=nf_{i,j}=f_{i-1,j}+f_{i,j-1}\\即\\f_{1,n}=1,f_{n,1}=nfi,j=fi−1,j+fi,j−1即f1,n=1,fn,1=n手玩一下每一排的通原创 2020-09-09 20:03:40 · 99 阅读 · 0 评论 -
20200908 专题:三角剖分
总览:valB,C,D,E=valB,C+valC,D+valD,E+valE,Bval_{B,C,D,E}=val_{B,C}+val_{C,D}+val_{D,E}+val_{E,B}valB,C,D,E=valB,C+valC,D+valD,E+valE,B以前一直不知道这叫三角剖分……T1 #2391. Cirno的忧郁思路:出题人真神仙,用维护面积的方法维护权值……sumi,jsum_{i,j}sumi,j 为 ΔO,i,j\Delta O,i,jΔO,i,j 的带符原创 2020-09-08 21:37:33 · 161 阅读 · 0 评论 -
20200908 专题:最小圆覆盖
总览:随机增量法圆的表示:((圆心(x,y)),半径r)((圆心(x,y)),半径r)((圆心(x,y)),半径r)初始圆为 ((0,0),0)((0,0),0)((0,0),0)、枚举每一个点,找到一个圆,使 p1−pnowp_1-p_{now}p1−pnow 在圆内枚举每一个点 pip_ipi,如果 pip_ipi 不在当前圆内,假设它在圆上,将圆设为 ((xi,yi),0)((x_i,y_i),0)((xi,yi),0)再枚举每一个它之前的点 pjp_jpj,如果 pjp_j原创 2020-09-08 20:59:06 · 197 阅读 · 0 评论 -
20200307 NOI Online T3 最小环(贪心)(数学问题)
咕~~~原创 2020-03-10 23:30:30 · 165 阅读 · 0 评论 -
20191110 专题:O(1)快速乘
总览:爆longlonglong longlonglong了怎么办?龟速乘?NO,NO,NO,它out了!模板:#define LL long longinline LL mul(LL x,LL y,LL mod){ return (x*y-(LL)((long double)x/mod*y)*mod+mod)%mod;}...原创 2019-11-10 00:19:59 · 116 阅读 · 0 评论 -
20191110 专题:拓扑排序
总览:当一个图为GADGADGAD(有向无环图)时,才有拓扑序。方法:统计每个点的入度后,找到入度为零的点,删除它,更新点的入度,重复这个操作,删除点的顺序即为拓扑序。从下表111遍历栈,即为拓扑序。int rd[A];int st[A],top;bool ex[A];inline void topu(){ queue <int> q; for(int i=1;i...原创 2019-11-10 01:05:43 · 86 阅读 · 0 评论