摘要: 堆排序利用二叉堆来进行排序,而二叉堆用完全二叉树代替(因为易于储存和索引),一个数组就可以存储完全二叉树。(๑╹◡╹)ノ"""但堆并不一定是完全二叉树,堆还有更复杂的,就不一一列举;怎么用数组存储呢?对于每一个节点i,其父节点为i/2,其左右子节点分别为i*2,i*2... 阅读全文
posted @ 2017-09-09 09:24 琳小羽 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 利用循环不变式(loop invariant)理解算法的正确性初始化:循环的第一轮迭代开始前,是正确的;保持:如果在循环开始的某一轮迭代开始前是正确的,那么下一轮迭代开始前也应该是正确的;终止:循环结束,利用不变式证明算法的正确性。在数学归纳法中,要证明一个性质是正确... 阅读全文
posted @ 2017-09-05 10:58 琳小羽 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 一道裸的字典树,关于字典树的详细介绍还是去看百度吧,再贴一遍也没意义下面分析,先上图:#include#include#includeusing namespace std;const int M=26; //一般是26个小写字母,可自行更改 typedef str... 阅读全文
posted @ 2017-09-04 19:24 琳小羽 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 贪心思想,每次选择其中最小的两个合并来减少代价。将原始数据变为负数使用优先队列进行处理:#include #include#includeusing namespace std;int main(){ priority_queues; long long sum=0;... 阅读全文
posted @ 2017-08-28 18:36 琳小羽 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 首先说一下什么叫单源最短路径问题:给定一个带权有向图G=(V,E),其中每条边的权是一个实数。另外,还给定V中的一个顶点,称为源。现在要计算从源到其他所有各顶点的最短路径长度。这里的长度就是指路上各边权之和。(摘自百科) 这个题算是正儿八经的单源最短路径问题,因为图中... 阅读全文
posted @ 2017-08-15 16:29 琳小羽 阅读(618) 评论(0) 推荐(0) 编辑
摘要: (╥╯^╰╥)说起这道题就心酸,几个数据特别坑,几分钟写完的程序花了一个上午调试bug,吐槽完毕,进入正题:1,需要建立一个标记数组vis表示当前单词被采取的次数;2,for循环中找到每一个符合条件的龙头,初始化标记数组后进行深度优先搜索;3,因为连接起来的单词要最长... 阅读全文
posted @ 2017-08-13 10:48 琳小羽 阅读(245) 评论(0) 推荐(0) 编辑
摘要: (〃'▽'〃)φ(>ω#include#includeusing namespace std;int ans; //最终答案 char map[5][5];char lin[5][6]={"11111","01111","00*11","00001","00000"}... 阅读全文
posted @ 2017-08-12 19:05 琳小羽 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 不得不承认数学不好蛮吃亏( ̄▽ ̄)~*1,众所周知,质数是不可以再分的数,所以质数是相乘得到数的最小单位。所有的因数都是由几个质数相乘得到的;(X=2^p1+3^p2+5^p3+……+z^pi)2,一个数约数的个数=所有素因子次数加一的乘积;3,2*3*5*7*11*... 阅读全文
posted @ 2017-08-11 19:10 琳小羽 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 题目链接:点击打开链接φ(>ω>N>>C;for(int i=0,lin=0;i>l1>>l2; if(l1>=C)sum+=l2; else{s[lin].a=l1,s[lin].b=l2;lin++;} }2,剩下的记录在数组s中的便全是小于C的面额;利用sort... 阅读全文
posted @ 2017-08-07 12:09 琳小羽 阅读(174) 评论(0) 推荐(0) 编辑
摘要: #include#include#includeusing namespace std;const int M=50;int map[M][M],vis[M][M]; //map代表地图,vis用于标记是否已走过int bx,by,ex,ey,ans; //an... 阅读全文
posted @ 2017-08-03 17:31 琳小羽 阅读(79) 评论(0) 推荐(0) 编辑