- 博客(259)
- 收藏
- 关注
原创 C语言实现多线程的归并排序
C语言实现多线程的归并排序问题 利用多线程实现归并排序。归并排序是分治算法的代表,适合改写为多线程。构造数据 数据规模为2∗1062*10^62∗106,整数。array_length=2∗106array\_length = 2*10^6array_length=2∗106 srand((int)time(NULL)); for (int i = 0; i < ...
2019-04-03 10:01:11
5385
3
原创 快速在数组中查找重复和遗失的元素
快速在数组中查找重复和遗失的元素问题 给定集合Z={x1,x2,...,xn}Z = \{ x_1, x_2, ..., x_n \}Z={x1,x2,...,xn}。集合内包含nnn个元素,每个元素都是数字。对于另一个集合AAA,它缺失了ZZZ中的一个元素,并重复了一个元素。 希望设计一个算法,找出重复和缺失的元素。空间复杂度O(1)O(1)O(1),时间复杂度O(n)O(n)O...
2019-02-11 23:45:25
509
原创 在元素重复三次的数组中查找只出现一次的元素
在元素重复三次的数组中查找只出现一次的元素问题 给定一个数组,它里面除了一个元素外,其他元素都重复了三次,要求空间复杂读为O(1)O(1)O(1),时间复杂度为O(n)O(n)O(n),查询只出现一次的元素。分析 不能进行排序查找,排序时间复杂度为O(nlogn)O(nlogn)O(nlogn),所以必须O(n)O(n)O(n)遍历数组得出结果。 我们考虑位运算。除了一个元素之外,...
2019-02-11 21:48:23
1042
原创 什么是B+Tree
什么是B+Tree序言 之前面试头条,被问起数据库的索引中B+Tree的特性,一无所知。现在参考网上博客,学习一下。基本概念 m阶:指的是B+树内一个节点的子节点数目的最大值不超过m。基本特征 1.有k个子树的中间节点包含k个元素,元素只用来索引,不存储数据。所有数据存放在叶子节点。 2.所有的叶子节点包含了全部元素的信息,以及指向包含这些元素记录的指针,且叶子节点本身依赖...
2019-02-11 00:38:36
1981
原创 矩阵快速幂求解斐波那契系列问题
矩阵快速幂求解斐波那契问题问题 求解斐波那契数列第NNN项分析 对于求第NNN项的值,可通过矩阵快速幂将时间复杂度降至O(logN)O(logN)O(logN)。递归式F(N)=F(N−1)+F(N−2)F(N)=F(N-1)+F(N-2)F(N)=F(N−1)+F(N−2),是一个二阶的递推数列,可用矩阵乘法表示,且状态矩阵为2×22\times 22×2的矩阵:(F(n),...
2019-02-10 20:08:38
3133
原创 数据库-索引知识汇总
数据库-索引知识汇总 + mysql索引语法什么是索引 索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,主要使用了B+tree和Hash结构。分类 聚集索引:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能有一个聚集索引。聚集索引可以根据查询要求,迅速缩小查询范围,避免全表扫描。 非聚集索引:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同...
2019-02-10 15:37:14
335
原创 两个单链表相交的一系列问题
两个单链表相交的一系列问题要求 单链表可能有环,可能无环头节点 head1 和 head2, 这两个链表可能相交,也可能不相交。请实现一个函数, 如果两个链表相交, 请返回相交的第一个节点; 如果不相交, 返回 null 即可。 如果链表1的长度为NNN,链表2的长度为MMM,时间复杂度请达到O(N+M)O(N+M)O(N+M),额外的空间复杂度请达到O(1)O(1)O(1)。解答...
2019-02-09 20:47:21
345
原创 如何判断两个有环链表是否相交
如何判断两个有环链表是否相交问题 如何判断两个有环链表是否相交,相交则返回第一个相交节点,不相交则返回null。思路 我们已经得到了两个链表各自的第一个入环节点,假设链表1的第一个入环节点为loop1,链表2的第一个入环节点为loop2。具体如下: 1.如果loop1 == loop2,拓扑结构如图: 该情况下,考虑链表1从头开始到loop1这一段与链表2从头开始到loop2...
2019-02-09 20:39:58
1901
原创 如何判断两个无环链表是否相交
如何判断两个无环链表是否相交问题 如何判断两个无环链表是否相交,相交则返回第一个相交节点,不相交返回null。思路 如果两个无环链表相交,那么从相交节点开始,一直到两个链表终止的这段,二者共享。具体如下: 1.链表1从头节点开始,走到最后一个节点,统计链表1的长度记为len1,同时记录链表1的最后一个节点记为end1。 2.链表2从头节点开始,走到最后一个节点,统计链表2的长度...
2019-02-09 20:14:13
898
原创 如何判断一个链表是否有环
如何判断一个链表是否有环问题陈述 如何判断一个链表是否有环,如果有,则返回第一个进入环的节点,没有则返回null。思路 如果一个链表无环,那么遍历链表一定可以遇到链表的终点;如果链表有环,那么遍历链表就永远在环内转下去。具体如下: 1.设置快慢指针分别为fast和slow。开始,slow和fast都指向链表的头节点head。然后slow每次移动一步,fast每次移动两部,在链表中遍...
2019-02-09 19:58:10
1808
原创 《统计学习方法》的符号表
统计学习方法的符号表符号数学意义RRR实数集RnR^nRnn维实数向量空间,n维欧式空间HHH希尔伯特空间X输入空间Y输出空间x∈Xx\in Xx∈X输入,实例y∈Yy \in Yy∈Y输出,标记XXX输入随机变量YYY输出随机变量T={(x1,y1),(x2,y2),...,(xN,yN)}T=\{ (...
2019-01-30 01:12:47
935
2
原创 ACM回忆录(二) :2018多校训练
额,写这博客时候多校还没结束,但也快结束了。不得不说,收获还是挺多的。学习了很多ACM选手的骚操作,还有各种巧妙的解题思路。虽然我从去年暑假开始一直坚持训练,刷了很多很多的题,但水平依然非常的低。比赛成绩一直不理想,试过好几次300+,400+,太菜了。 假如有新人想入坑,我就提一些从我身上的总结的教训和经验吧。 1. 多刷近3年的真题,多校题。很久以前的题不是不好,只不...
2018-08-14 14:55:07
744
原创 2018多校第7场1011 && HDU6396 Swordsman 优先队列+IO挂
题目链接:多校第7场1011思路分析:m个维度,每个维度分别用优先队列存储,根据贪心的想法逐个维度和v[i]比较。因为数据量巨大,用到IO挂 代码如下:#include <bits/stdc++.h>using namespace std;namespace fastIO { #define BUF_SIZE 100000 bool ...
2018-08-13 21:14:42
195
原创 2018多校第4场1010 && HDU6341 ProblemJ. Let Sudoku Rotate
题目链接:Let Sudoku Rotate 思路分析:大矩形分为16个子块,搜索即可。数独限制性很强,可行性剪枝+最优化剪枝....看了一下标程,写的很精简,学习了... 代码如下:#include <cstdio>#include <cstring>#include <string>#include <algorithm...
2018-08-01 21:01:11
314
原创 2018多校第3场 M-Walking Plan && HDU6331 Problem M. Walking Plan
题目链接:M- Walking Plan 题意:给定一个 n 个点,m 条边的有向图,q 次询问 s 到 t 经过至少 k 条边的最短路数据范围:2 ≤ n ≤ 50,1 ≤ m,k ≤ 10000,1 ≤ q ≤ 100000 思路分析:分块计算,k<=10000,把100条边缩成一条边。偷懒把题解放上来吧... 代码如下:#include ...
2018-07-31 16:41:28
301
原创 2018多校第3场 G题 && HDU6325 Problem G. Interstellar Travel
题目链接:G-Interstellar Travel 思路分析:因为坐标相同的点只能选一个(比赛没看到这条件,浪费了2个半小时)...所以当然选择编号最小的最优从凸包上面走会更优,所以答案的解肯定包括起点,终点,凸包拐点。假如凸包一条边上有多点共线,那么就要看边上的点编号是否比边的终点编号小,是的话放到答案里解会更优。因为题目求的是字典序最小。 代码如下:#inclu...
2018-07-31 10:39:35
786
原创 2018牛客网暑期ACM多校训练第三场 J-Distance to Work
题目链接:J-Distance to Work思路分析: 板子题,简单多边形和圆面积交 + 二分 代码如下:#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>using namespace std;const double ep...
2018-07-27 18:21:34
324
原创 2018牛客网暑期ACM多校训练第三场 G-Coloring Tree
题目链接:G-Coloring Tree 题意:N个节点的树,可以染色K种要求相同颜色节点的距离为D,求问方案总数。 分析:BFS 构造函数f(D) 表示相同颜色节点距离至少为D的方案总数,那么最后答案就是f(D)-f(D+1)对于当前节点,找出已经访问过的节点中与当前节点的距离小于D 的节点。这些节点任意两个之间的距离一定小于 D ,所以这些节点的颜色是互不相同...
2018-07-27 16:16:12
399
原创 HDU2826 简单计算几何题 -- 判断简单多边形是否相似
传送门:HDU2826题意很清楚了,就是问多边形是否相似。相似判断的充要条件是对应边成比例,N<=300,暴力枚举两个多边形的对应边,然后比较判断是否对应边比例都相等。注意一个坑点:求两点距离公式 不要用加号,改用减号。可能加号计算的数值太大了,WA了10多次。。。代码如下:#include <cstdio>#include <algorithm>#include...
2018-05-15 23:51:05
905
原创 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H-Rock Paper Scissors Lizard Spock.
传送门:Rock Paper Scissors Lizard Spock.这题还有一个弱化版:GYM 101667-H分析:石头剪刀布加强版。把短的字符串跟长的字符串从某一位置进行匹配,问最多可以匹配多少位。把其中一个串反转,对每一种字符单独计算。字符匹配的过程看做卷积和,则当前要匹配的字符对应1,否则为0。用FFT快速求解,最后取最大值。代码如下:#include <cstdio>...
2018-04-22 22:56:04
428
原创 HDU3308 线段树区间合并 (求最长连续子串+单点修改)
传送门:HDU3308分析:线段树区间合并被刷烂的水题。。把自己代码风格的线段树放上来。//HDU3308 线段树区间合并 (求最长连续子串+单点修改)#include <cstdio>using namespace std;const int maxn = 100000;struct node{ int l,r; int lv,rv,mv;};int n...
2018-04-17 17:19:49
544
原创 Helvetic Coding Contest 2018 online mirror (teams allowed, unrated) C2.Encryption (medium)
传送门:Encryption(medium)题意:N个数,分成k个连续的序列,把每个序列的数累加取模p,求k个取模结果累加的最大值。分析:DP, 复杂度O(Nkp)设dp[i][j]为取模结果i,分为j个区间的最大值,具体见代码~#include <cstdio>#include <cstring>#include <algorithm>using nam...
2018-04-16 21:48:34
256
原创 HDU1892 二维树状数组 区间求和,单点修改
传送门:二维树状数组模板题分析:二维树状数组模板题,求区间和 跟 单点修改代码如下:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1000+10;const int N = 1005;int a[maxn][ma...
2018-04-16 17:52:10
221
原创 埃森哲杯上海大学春季赛暨金马五校赛题解汇总
比赛时候卡在全场题L,心态很崩,后来其他题目思考不进去了。。。加上一个队友临时有事也没来训练。。。最后4题收尾。。。补题补题,现在把暂时都切出来的题目放上题解和代码吧~------------------------------------------------------------------------------------------------------------------A:...
2018-04-16 11:39:46
371
原创 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) P- Fear Factoring
传送门:点击打开链接分析: 题目比较有意思,这么转换就比较好求解了~代码如下:#include <cstdio>#include <cstring>#include <cmath>using namespace std;typedef unsigned long long LL;LL a,b;LL func(LL n){ i...
2018-04-16 10:49:20
1351
原创 HDU3265 扫描线+线段树 区间并
传送门:HDU3265题意:N个海报,每个海报中间有个矩形的洞。问这N个海报覆盖面积和是多少。分析: 非常经典的题目了,扫描线+线段树 进行 区间并操作 既然海报内有块矩形不能计算入内,只要把海报分为四块不重叠的部分就好了。重点是空间限制比较紧,交了若干次才A的。。改用unsigned short(0...65536) 存储坐标才A了。。注意:若扫描线个数小于2直接输出0,如果按常规的线段树求区间...
2018-04-15 11:24:58
291
原创 2018, XI Samara Regional Intercollegiate Programming Contest H题- Safe Path
传送门:Safe Path题意:问你能否从起始点到达出发点。注意,在地图的一些地区有怪兽,只要怪兽能在d步内到达你现在的位置,你会被立刻杀死。。分析:BFS裸题,注意,N*M是2e5大小,把地图进行压缩一下~代码如下:#include <cstdio>#include <cstring>#include <queue>using namespace std...
2018-04-09 11:56:36
277
原创 2018, XI Samara Regional Intercollegiate Programming Contest J题-Parallelograms
传送门:Parallelograms题意:若干个棍子,求能最多组成多少个平行四边形分析:统计不同长度的棍子数目,用一个变量tot加上每个长度棍子数目/2, 最后输出tot/2每个长度的棍子要在一个平行四边形内使用两根,最后还要任意2组的长度的棍子搭配~一开始以为可以不同长度的棍子拼接成一条边使用,就思考了好久没搞出来TAT代码如下:#include <cstdio>using nam...
2018-04-09 10:54:05
322
原创 2018, XI Samara Regional Intercollegiate Programming Contest M题-Forgotten Spell
传送门:M-Forgotten Spell题意:一个N长字符串,有一个位置的字母不确定是什么。现在有三个复制版本A,B,C,但每个版本最多会有一个错误,要求你还原出原来的字符串是啥。。分析:先O(n)扫描一遍,找出A,B,C不一样的位置。假如多于三个位置不一样,那么无解。假如没有位置不一样,那么有多解。现在不一样的位置个数最多为3个,暴力枚举每个位置原来的字母是什么,最多有26^3种情况。判断每种...
2018-04-09 10:14:13
353
原创 CERC2017 F: Faulty Factorial 简单数论题
传送门:Faulty Factorial分析:分为n==p, n>=2*p, 2*p>n>p , n<p 四种情况讨论其中n==p使用到了威尔逊定理,且注意, n=p=2,无解情况不难想,看代码吧#include <iostream>using namespace std;typedef long long LL;LL n,p,r;LL qpow(L...
2018-04-08 16:14:38
832
原创 2-SAT专题练习 (题解+AC代码)
寒假回老家那几天,看了蓝书的2-SAT专题介绍,觉得比较有趣。但天天串亲戚,没空刷题。开学后自己建了一个2-SAT专题训练,把经典问题都做了。觉得2-SAT难度不大,代码简单易懂。有些题构图比较有趣吧~~2-SAT可行性的判断参照蓝书,简单易懂,自己写一遍就记住怎么写了~我不建议学网上一些大牛的模板,太复杂了!!!比如kuangbin的2-SAT模板,写起来还是挺复杂的,我反正不会去看的。。题目解...
2018-03-31 17:15:05
641
原创 2017ACM-ICPC北京区域现场赛 G题 hihocoder1633
传送门:点击打开链接题意:一个N*N的网格,从左下角走到右上角需要的最短步数。要求不能经过# 而且路径不能经过一个三角形的内部,可以沿边走。分析:计算几何题里不算难题,但若没想到坑点就一直卡题了。我采用的判断线段相交方法是规范相交,判断点是否在线段上包括了点在线段端点的情况假设当前路径是线段L,三角形为ABC先预处理,若格子在三角形内部,设置为#case1:L的一个端点在外,一个在内。只要枚举L跟...
2018-03-28 21:03:51
1038
原创 第13届 广工校赛 题解汇总
题目链接:13届广工校赛貌似牛客网的算法群里已经有题解的pdf了,那我不复述那么多了。 贴贴AC代码就走~~A-跳台阶#include <cstdio>using namespace std; int n;long long a[40];int main(){ a[1] = 1; for (int i=2; i<=30; i++) { a...
2018-03-27 22:25:58
266
原创 Codeforces 955C Sad powers 基础数论+二分
传送门:Sad powers分析: 先固定指数p,x^p <= 1e18 可以推导出 x <= 10^(18/p) [取对数推导]若 p == 2, 则有 10^9 那么多的数字 满足条件若 p >= 3, 则最多有 10^6 的数字满足 条件先预处理,把所有不是 完全平方数且满足 x^p<=1e18(p>=3) 的x都加入到vector, 排序去重对于每次查询 输出...
2018-03-27 16:49:30
869
10
原创 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 E-回旋星空
传送门:点击打开链接分析:O(N^2)复杂度的算法对于每个点,计算出跟N个点的欧式距离,避免浮点数可以不开根号对距离排序,统计相同的距离个数最后输出结果乘2(题意要求)代码如下:#include <cstdio>#include <algorithm>using namespace std;const int maxn = 1000+10;struct Point...
2018-03-24 20:46:23
224
原创 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 F-等式 简单数论题
传送门:点击打开链接分析:运用质数唯一分解定理求解首先等式可以变化为 n(x+y) = xy 也就是 n^2 = (n-x)(n-y)对n^2质数分解也就是对n质数分解具体实现见代码:#include <cstdio>#include <cstring>using namespace std;const int maxn = 70;int a[maxn],tot;...
2018-03-24 20:32:52
202
原创 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 L-用来作弊的药水 简单数学题
传送门:点击打开链接分析: x^a = y^b取对数: alogx = blogy精度 eps = 1e-3 才AC。。代码如下:#include <cstdio>#include <cmath>using namespace std;const double eps = 1e-3;int x,y,a,b;double p,q;int main(){ ...
2018-03-24 19:41:32
248
原创 [kuangbin带你飞]专题八 生成树 题解汇总
本来准备省赛和其他的比赛先不打算做kuangbin专题了,不过我朋友AK了最小生成树专题,问我继续怎么练。既然都练了最小生成树,不如把后面的那个生成树专题也啃了吧。然后clone生成树专题,花了5天怼完。主要是中间一堆作业要怼,耽误了很多时间。我把我的题解和代码都放到了GitHub上了,有兴趣的同学可以去看看哇!链接:生成树专题 题解和代码前四题都是求次小生成树,没啥难度。基于kruskal算法的...
2018-03-21 00:06:39
525
1
原创 Codeforces 923B Producing Snow
传送门:Producing SnowC. Producing Snowtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputAlice likes snow a lot! Unfortunately, this year's winter is alr...
2018-03-11 10:13:19
967
原创 Codeforces 923A - Primal Sport
传送门:Primal SportA. Primal Sporttime limit per test1.5 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAlice and Bob begin their day with a quick game. They first choos...
2018-03-11 10:02:39
1247
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人