- 博客(254)
- 资源 (3)
- 收藏
- 关注
原创 冒泡排序及优化
冒泡排序及其优化基础写法优化优化1优化2优化3参考基础写法冒泡排序思想:泡泡一直向上冒,冒到不能冒的位置。即每次比较两个相邻元素,如果顺序不对就交换,这样一轮交换就能确定当前最大/小值。假设数组array[1...n]array[1...n]array[1...n],按照从小到大排序,如果第1个元素大于第2个元素,则交换两个元素,一直到第n-1个元素和第n个元素比较,那么一轮结束,第n个元素...
2019-08-09 16:48:37
569
1
原创 LeetCode linked-list-cycle linked-list-cycle-ii
linked-list-cycle//解决方案:快慢指针,如果有环,则会相遇;使用hash存储,需要额外申请空间/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(N...
2019-07-17 20:46:53
382
原创 Visual Studio查找项目代码里的中文字符
问题背景接到反馈,某一项目代码有中文注释和非UTF-8编码格式的文件,要求处理这些中文注释,并把文件改为UTF-8的格式。解决方案查找中文字符因为Visual Studio查找功能支持表达式,不希望一个个查找文件浪费时间,所以基本思路是使用正则表达式,对照输出结果在文件里修改。但是,网上查找的正则表达式,如下,查找无效。(".[\u4E00-\u9FA5]+)|([\u4E00-\u...
2019-06-27 13:44:58
2516
原创 乱炖 | 最小生成树、割点割边、最大二分匹配
目录图的最小生成树 Kruskal再谈-图的最小生成树 Prim图的割点如何求割点?图的割边如何求割边?二分图附加考题(主元素问题)图的最小生成树 Kruskal思路:让边的总长度之和最短,首先选择最短的边,其次选择次短的……,直到选择了n-1条边为止。(注意选边不能造成回路)难实现的是:判断两个顶点是否已经连通。(可以使用广搜或者深搜,但这样效率低)可以使用已经学习的并查集,把所有的顶点放...
2019-03-29 19:30:20
761
原创 树
目录树之旅二叉树并查集树之旅树是指任意两个结点间有且只有一条路径的无向图(只要是没有回路的连通无向图就是树)。深度是从根到这个结点的层数(根为第一层)二叉树二叉树是一种特殊的树,每个结点最多有两个儿子。更严格的递归定义:二叉树要么为空,要么由根节点、左子树和右子树组成,而左子树和右子树分别是一棵二叉树。满二叉树:如果二叉树的每个节点都有两个儿子,这样的树叫满二叉树(深度为hhh且结点...
2019-03-27 14:46:26
262
原创 最短路(Floyd、Dijkstra、Bellman-Ford、队列优化的Bellman-Ford)
目录多源最短路 Floyd-Warshall单源最短路径 Dijkstra解决负权边 Bellman-FordBellman-Ford的队列优化最短路算法对比多源最短路 Floyd-Warshall思路:如果要让任意两点i、j之间的距离变短,只能引入第三个点k,通过这个顶点k中转即i->k->j,才可能缩短i到j的路程。Floyd算法就是每次增加一个允许通过的中转点,来求所有顶点的...
2019-03-25 16:05:14
300
原创 搜索 记录
目录全排列走迷宫(dfs)走迷宫(层层递进-bfs)bfs中的标记全排列void dfs(int step){ if(step == n) { for(int i = 0; i < n; i++) printf("%d ", a[i]); printf("\n"); return; }...
2019-03-20 18:04:45
407
原创 栈、队列、链表基础
目录队列(先进先出)栈(先进后出)链表队列(先进先出)定义结构体:const int N = 1000+10;struct Queue{ int data[N]; //队列的主体,用来存储内容 int head; //队首 int tail; //队尾};其中,head用来记录队列的队首(即第一位),tail用来记录队列的末尾(即最后一位)的下一个位置。在...
2019-03-18 19:37:16
269
原创 排序小结(简易桶排序、冒泡、快排)
目录简单桶排序冒泡排序快速排序简单桶排序基本思想:用数组存储元素出现的次数,book[i]的值表示元素i出现的次数。假设桶的数目为MMM,需要排序的元素有NNN个,那么算法时间复杂度为O(M+N)O(M+N)O(M+N)。例子:int main(){ int n, num, book[1001] = {0}; scanf("%d", &n); for(i...
2019-03-18 13:04:53
174
翻译 论文阅读:Lightweight Locking for Main Memory Database System
文章信息VLDB 2012Northwestern Polytechnical University, ChinaYale UniversityKun Ren,Alexander Thomson,Daniel J. AbadiAbstract在数据库系统中,锁是一种被广泛使用的并发控制机制。由于越来越多的OLTP数据库部分或者全部放到内存中,disk io对事务吞吐量的限制没那么明...
2018-12-09 18:00:25
1197
原创 范式通俗理解:1NF、2NF、3NF和BNCF
范式通俗理解:1NF、2NF、3NF和BNCF准备知识超键、候选键、主键函数依赖部分依赖传递依赖范式1NF2NF3NFBCNF参考准备知识超键、候选键、主键超键超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键候选键候选键(candidate key):不含有多余属性的超键称为候选键。也就是关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任...
2018-10-24 21:03:43
134838
49
原创 Linux系统调用
系统调用基本原理系统调用其实就是函数调用,区别是调用内核态的函数。但是用户态到内核态不是随意切换的,所以通过系统调用接口实现用户态到内核态的切换,在保护机制的计算机系统中,用户必须通过软件中断或陷入的方式使进程从用户态切换为内核态。 在i386体系中,Linux系统调用接口是通过软中断指令int 0x80使进程从用户态进入内核态的,这个过程也叫“陷入”。系统调用接口调用软中断指令int 0x...
2018-05-22 19:55:32
276
原创 爱奇艺2018春招Java工程师编程题 C++版题解
字典序最大子序列题目描述 对于字符串a和b,如果移除字符串a中的一些字母(可以全部移除,也可以一个都不移除)就能够得到字符串b我们就称b是a的子序列。例如.”heo”是”hello”的子序列,而”xl”不是。 对于给定的一个字符串s,请计算出s的字典序最大的子序列。输入描述:输入包括一行,一个字符串s,字符串a长度Length(1 <= 1ength <= 50)....
2018-05-22 19:54:54
445
原创 腾讯2017暑期实习生编程题
构造回文时间限制:1秒空间限制:32768K给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.输出描述:对于每组数据,输出一个整数,代表最少需要删除的字符个数。输入例子1: abcda ...
2018-05-22 19:53:45
298
原创 UVa 455 - Periodic Strings
题目链接:点击打开链接解题思路:这题一直卡,WA,我以为是我逻辑问题,后来才发现是输出格式,两行输出之间有空行且最后一行输出没有空行。UVa上没有PE,显示的是WA,真是醉醉的。思路也很简单,暴力,首先循环节一定是字符串长度的约数,接下来就是判断了。代码:#include #include #include #include #include using
2016-03-31 00:18:34
654
原创 UVa 1584 - Circular Sequence
题目链接:点击打开链接解题思路:第一想法就是用string的substr函数,把字符串分成两部分,分别拼接,求出字典序最小的值。一次性AC。代码:#include #include #include #include #include using namespace std;int main(){ int n; string s; while(
2016-03-30 21:49:21
428
原创 UVa 1583 - Digit Generator
题目链接:点击打开链接解题思路:打表。遍历1到1000000+10的数,注意已经存储过的不应该更新,不然无法保证是最小生成元。注意看sumDigit函数中的一个if判断。代码:#include #include #include #include #include using namespace std;int n;const int maxn = 1000000+10
2016-03-30 21:35:33
537
原创 UVa 340 - Master-Mind Hints
题目链接:点击打开链接解题思路:设数字位置正确的有a个,数字相同但位置不同的有b个。假设答案序列中有5个1,输入的序列中有4个1,其中我们知道数字位置正确的有1个,那么对于1来说,数字相同但位置不同的有多少个呢?答案是3个,想一想。关键在于这个思想,其中对于1来说,b = min(5,4)-a = min(5,4) - 1 = 5。那么因为输入序列是1到9的数字,我
2016-03-30 21:20:31
469
原创 UVa401 - Palindromes
题目链接:点击打开链接解题思路:理解题意,主要是对回文与镜像回文的判断。两者可以同时进行。对回文来说,首尾字符要相同;对镜像回文来说,第一个字符需要是最后一个字符的镜像,第二个字符需要是倒数第二个字符的镜像,……。注意,在对回文进行判断时,如果是奇数个字符,那么中间一个的无需判断,但是对于镜像回文来说,中间一个字符必然有镜像,且它的镜像必然是它自己。输入字符串不含空格 Tab等
2016-03-30 20:44:20
812
原创 Tex Quotes UVa 272
题目链接:题目解题思路:用fgets()读取一行字符,边读取边处理。代码:#include #include #include #include #include using namespace std;const int N = 100000000;char a[N];int main(){ int p = 1; while(fgets(a, s
2016-03-30 16:23:38
485
转载 fgets和gets的区别
fgets()和gets()原链接:点击打开链接Read a string from console or filePrototypes#include char *fgets(char *s, int size, FILE *stream);char *gets(char *s);DescriptionThese are functions
2016-03-30 16:06:59
946
原创 CodeForces 651C Watchmen
F - WatchmenTime Limit:3000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uSubmit Status Practice CodeForces 651CDescriptionWatchmen are in a danger and Doctor Manhat
2016-03-29 00:06:05
1605
原创 UVa 1584 - Circular Sequence
Some DNA sequences exist in circular forms as in the following figure, which shows a circular sequence ``CGAGTCAGCT", that is, the last symbol ``T" in ``CGAGTCAGCT" is connected to the first symbol ``
2016-02-28 15:46:27
405
原创 UVa 1583 - Digit Generator
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=4458&mosmsg=Submission+received+with+ID+16918280For a positive integer N , the digit-
2016-02-28 14:51:36
601
原创 ACJoy C Beautiful Year
A B C D E F G H I JC - Beautiful YearTime Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionIt seems like the year of 2013 came
2016-02-27 21:01:29
578
原创 ACJoy B Queue at the School
A B C D E F G H I JB - Queue at the SchoolTime Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionDuring the break the schoolchildr
2016-02-27 20:41:57
821
原创 ACJoy A Presents
A B C D E F G H I JA - PresentsTime Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionLittle Petya very much likes gifts. Recent
2016-02-27 20:19:46
607
原创 【离散数学】实验四 图的随机生成及欧拉(回)路的确定
1)实验目的编程随机生成n个结点的无向图并能进行(半)欧拉图的判定,若是则给出欧拉(回)路。2)实验要求 对给定n个结点,随机生成邻接矩阵以确定某无向简单图并进行欧拉图和半欧拉图的判定,若符合则给出至少一条欧拉回路或欧拉路。3)编码思路: 随机生成邻接矩阵借用rand函数。 欧拉图的判定:存在欧拉回路; 半欧拉图的判定:存在欧拉路;
2015-12-09 10:45:26
6213
1
原创 【离散数学】实验三 偏序关系中盖住关系的求取及格论中有补格的判定
1.实验目的 编程实现整除关系这一偏序关系上所有盖住关系的求取,并判定对应的偏序集是否为格。 2.实验要求 对任意给定的正整数,利用整除关系求所有由其因子构成的集合所构成的格,判断其是否为有补格。 3.编码思路 将该正整数的因子保存在数组中,利用盖住关系的性质,两个数a、b之间不存在第三者c,使得a整除c,c整除b,即可求取所有盖住关系。 整除
2015-11-02 21:00:02
8776
原创 【离散数学】【改进版】实验二 集合上二元关系性质判定的实现
性质判断原理和编码思路 关于自反性、对称性、传递性、反自反性和反对称性的定义不在此赘述。自反性对称性和反自反反对称比较简单,关于传递性的判断,我们使用Warshall算法计算传递闭包,当传递闭包对应的关系矩阵与原关系矩阵一致时,我们认为它是满足传递性的。关于编码思路,做个提纲: 一共6个函数,前5个函数分别表示对5个性质的判断,第6个是Warshall算法
2015-10-14 00:07:48
7817
原创 南邮NOJ 1029 短语搜索
好久不曾刷题,凌晨睡不着,找了道比较简单的练下手,久违的AC感觉,等这阵子忙完等级考试、比赛、论文的一堆破事,就全心投入刷题,准备PAT考试中去,再参加最后一次校赛。其实挺后悔没入校队的,真想到区域赛看看,真难过现在,想哭。往事已矣,立足当下,自勉,写完到A协睡觉去。短语搜索时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 6
2015-10-07 03:21:55
729
原创 【离散数学】Warshall算法实现 传递闭包对应矩阵
测试样例,数据拿离散书上Page 124页测的:/*71 1 0 0 0 0 0 0 0 0 1 0 0 00 0 0 0 1 0 00 1 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 0*/代码:#include #include #include #include #inclu
2015-10-01 02:54:19
6923
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人