- 博客(20)
- 资源 (4)
- 收藏
- 关注
原创 【洛谷模板题 最小生成树】kruskal算法入门
Kruskal算法 最小生成树算法知识点: 算法导论第23章:最小生成树#include <iostream>#include <iomanip>#include <cmath>#include <cstring>#include <algorithm>using namespace std;struct Edge...
2018-08-31 13:02:52 425
原创 【HDOJ 3342 Legal or Not】拓扑排序入门
关于拓扑排序的基础知识:算法导论第22章:基本的图算法#include <iostream>#include <iomanip>#include <cstring>#include <vector>#include <list>#include <stack>using namespace std;vec...
2018-08-31 11:23:23 173
原创 【CCF 201703-3】Markdown
写在前面CCF第三题,一道相对简单的字符串模拟题思路每次先读取一行line,先把“强调”和“超链接”处理完毕,然后分3种情况处理:1.若line[0]为‘#’,说明是标题2.若line[0]为“*”,说明是列表,反复读取并处理直到空行3.说明是普通的段落,反复读取并处理直到空行测试数据C++代码#include <iostream>#...
2018-08-29 22:44:08 351
原创 算法导论第21章思考题
脱机最小值(off-line minimum problem)输入给定一个操作序列,包括INSERT(x)和EXTRACT-MIN,操作数x∈[1,n]样例输入4,8,E,3,E,9,2,E,E输出将第i次EXTRACT-MIN的数保存在extract[i]中在线算法建立一个优先队列,给定一个操作,马上在优先队列中做出相应改变即可离线算法(off-line)...
2018-08-29 16:52:34 1255
原创 算法导论第23章:最小生成树
引理如果将图G切割成G1、G2,图G的最小生成树 = G1的最小生成树 + G2的最小生成树 + 连接G1、G2权重最小的边。Kruskal’s Algorithm步骤:①分别对|V|个结点MAKE-SET②对E按升序排序③选择最短的一条边e(x, y),若FIND-SET(x) != FIND-SET(y),则加入树边的集合时间分析:①③花费O((V+E)α...
2018-08-27 22:48:15 606
原创 算法导论第21章:并查集
算法分析的一个约定MAKE-SET的次数为nMAKE-SET、FIND-SET、UNION的总次数为m不相交数据集合的链表实现链表表示一个集合,结点表示一个元素。每个结点都有指向头节点的指针,头结点指向集合的代表元。MAKE-SET(x):创建一个只有一个结点的链表【O(1)】FIND-SET(x):元素的结点指向头节点,再指向代表元 【O(1)】UNION(x,...
2018-08-27 20:31:36 1588
原创 算法导论第22章:基本的图算法
目录图的表示特殊的图图的遍历拓扑排序(Topological Sort)强连通分量(Strongly Connected Components)欧拉回路(Eulerian Circuit)题选图的表示1.邻接矩阵(Adjacency Matrix)2.邻接链表(Adjacency List)3.完善邻接链表(Implementing Adjacency...
2018-08-24 18:53:17 1799
原创 【洛谷模板题】 线段树、树状数组入门(2)
题目:https://www.luogu.org/problemnew/show/P3372线段树(含区间修改)#include<iostream>using namespace std;#define LEFT(x) (x << 1)#define RIGHT(x) ((x << 1) | 1)long long seg[100005 * ...
2018-08-21 21:54:59 251
原创 【HDU1166 敌兵布阵】 线段树、树状数组入门(1)
数据结构介绍线段树(Segment Tree)树状数组,即二叉索引树(Binary Index Tree)典型例题HDU1166敌兵布阵这题只涉及到单点修改,关于区间修改:【洛谷模板题】 线段树、树状数组入门(2)线段树解法#include <iostream>using namespace std;#define LEFT(x) (x <&...
2018-08-21 00:12:37 220
原创 Paint题解 DP+二分
DescriptionYou are painting a fence with n sections, numbered from 1 to n. There are k artists, each willing to paint their design on a specific portion of the fence. However, artists will never ag...
2018-08-18 16:05:33 466
原创 OS树和区间树
动态数据统计:顺序统计树(Order-statistic tree)数据结构:红黑树+每个结点保存子树的大小基本操作:OS_SELECT(x,i) r = size[left[x]]+1; //先计算x的处于的位置 if i = r //x正好是第i小的关键字 then return x; else if i < r ...
2018-08-18 02:05:19 837
原创 【CCF 201709-3】JSON查询
思路1:并没有采用递归化的策略,而是根据查询直接在源字符串中查找。(90分)#include <iostream>#include <cstring>#include <vector>using namespace std;// esc\aped -> "esc\\aped":string sour(const string&...
2018-08-16 11:38:37 465
原创 平衡搜索树之红黑树
五种平衡搜索树• AVL trees• 2-3 trees• 2-3-4 trees• B-trees• Red-black trees红黑树的性质1. 每个结点都是红/黑的2. 根结点和叶结点是黑色的3. 红色结点的parent是黑色的4. 简单路径的黑色结点个数相同(黑高bk)红黑树的树高将红色结点都合并到黑色结点中(2,3,4-tree),则由性质3...
2018-08-15 21:11:00 159
原创 《算法导论》第9章:顺序统计、中值
本章主要解决的问题:求数列中第i小的元素一、排序+下标定位【最坏情况Θ(n*lgn)】 二、随机化分治算法【平均情况Θ(n)】算法步骤1.随机选择主元2.线性时间内以主元划分为两部分,左半部分小于主元,右半部分大于主元。设主元的下标为k。3.根据情况选择:if k == i:直接返回A[k]if k > i:递归最半部分找第i小的数if k <...
2018-08-12 22:27:38 1058
原创 【CCF 201712-3】 Crontab
写在前面这是一道恶心的大模拟,需要考虑到的细节非常多,博主在踩了很多坑之后终于得了100分,先放个截图:遇到的一些坑坑1:采用暴力法(超时,-25分)坑2:英文字母不区分大小写(没考虑,-20分)坑3:s可以取,t不可取(没考虑,-20分)坑4:注意有些year-month-day是不存在的坑5:时间相同时,按输入顺序排序输出解本题的两种思路①暴力模拟...
2018-08-08 13:48:14 1067 4
原创 【CCF 201803-3】 URL映射
C++满分代码(思路都写在注释里了):#include <iostream>#include <cstring>#include <cctype>using namespace std;string result; //注意result是全局的 struct Match{ string line; //一行字符串 str...
2018-08-07 16:25:11 1181
原创 《离散数学及其应用》第4章:高级计数技术
递推关系斐波那契数例:不含2个连续0的n位二进制串数是多少?解:设其为An。若末尾是1,等价于An-1;若末尾是0,末尾一定是10,等价于An-2则有:An = An-1 + An-2 卡特兰数例: P=a0×a1×a2×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?解:记所求为Cn。注意到永远都有一个"×"在括号外...
2018-08-07 15:21:40 4806 5
原创 《离散数学及其应用》第3章:计数
重复组合从n个种同的元素中,每次取出r个可以重复的元素并成一组,叫做从n个不同的元素每次取出r个元素的允许重复的组合,即重复组合,其组合总数记作。 (一共有5种水果,买8个,H(8, 5))理解1:的非负整数解的个数。Xi的值表示第i个数取了几次。隔板法:C(n+r-1, n-1)= C(n+r-1,r)理解2:设有n个不同的元素,设从这n个不同的元素取出r个元素的重复组合...
2018-08-06 22:19:49 1693
原创 《算法导论》第11章:散列表
一、直接寻址表类似于计数数组,表中每一个槽只能放一个指针,一旦发生冲突无法解决二、哈希表的链接法每个槽保存一个链表,若是双链表可以方便删除效率分析:一次不成功查找的平均时间为θ(1+α),其中α=n/m称为装载因子。因此当槽的个数m为n的常数倍时,可以认为一次哈希操作耗费O(1)的时间哈希函数除法【形式简单】:h(k)=k%m,其中m不能取2^n,否则相当于取k的后n位数...
2018-08-04 19:34:55 294
原创 【洛谷P1020】导弹拦截(DP+贪心)
本题由两问构成:第一问是求最长非递增子序列的长度,可以用O(n*logn)的DP求解。我们已经知道O(n*n)的做法,dp[i] = max{dp[j]+1, 1},其中j<i且a[j]≥a[i]。重点在于在a[i]前面找到一个比a[i]大的数a[j],它对应的dp[j]最大。而O(n*logn)做法中,dp[i]保存最大拦截量为i时,最后一枚导弹高度的最大值。假设存在一个序列...
2018-08-04 17:24:03 902
AVS3核心码流结构解析
2021-01-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人