自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

72 73 76 89 82 84 89 81

我们都有梦想,凭什么不努力

  • 博客(41)
  • 资源 (2)
  • 问答 (10)
  • 收藏
  • 关注

原创 Radix-Sorting(线性阶 多关键字排序算法 基数排序)

1.引入:我们发现也经过证实,交换式的排序的算法的时间复杂度的下界是O(n*lgn),但是这真的就是我们的排序算法的极限了吗,事实并不是这样的,我们的多关键字的分配式排序--本文的基数排序就是如此却是打破了这样的瓶颈分配式的Radix-Sorting算法成功的将我们的算法的复杂度优化到无限接近线性阶的完美的O(n),下面,我们就来一一道来2.前身:桶式排序:我们先假定排序这样的

2016-09-30 13:55:10 1347

原创 数据结构和算法绪论下

1.算法分析的要点1.正确性2.复杂度的分析基础知识:级数:T(n)=1+2+3+...+n=O(n^2)T(n)=1^2+2^2+...+n^2=n*(n+1)*(2*n+1)/6=O(n^3)T(n)=1^3+...+n^3=O(n^4)可以很明显的看出来,几何级数的复杂度呈现出来的规律就是始终是我们的幂数的+1次幂的复杂度2.注意事项:无论n多

2016-09-25 20:48:55 297

原创 数据结构与算法 - 绪论上

1.计算机1.引言Dijstra原话摘引,计算机无非就是计算工具而已使我们使用的可以重复的,机械的,为了完成目的而使用的工具(当然每个工具都有自己的能力范围)2.算法所谓计算机算法,无非就是我们的计算过程:某种工具按照某种一定的规则,明确机械的重复某一些过程,即我们认为的解决问题的一些指令序列(特定的计算模型)大致分为以下几个步骤:1.输入(问题实际描述)2.输出(

2016-09-20 20:50:53 561

原创 背包问题九讲02-完全背包问题总结

1.题目描述:假设有n件物品,每件物品都有value,和cost属性,现有一个容量为v的背包,现在每件物品都有无限件可以选择,请问为了使背包的总价值最大,我们该怎么挑选放入背包的物品,输出我们的最大总价值2.思路:Benin属于彪悍尊的额完全背包问题,和01背包问题有所不同,完全背包问题强调了,每种物品都有无限件可以选取,那么我们最终要检查的状态就不在是01背包问题中的O(V*N)而是

2016-09-18 09:36:20 1210 1

原创 背包九讲01-01背包问题阅读笔记

1.问题描述:背包问题:给出n件物品以及我们的背包的总容量v,以及n件物品的价值value和耗费cost,每件物品只有两种选择,装或者不装,请问如何选择装填的物品才可以使我们的最后获得价值最大2.求解思路:这我就不阐明记忆化搜索的思路了,既然是背包问题的专题,我就只讲动态规划的方法定义状态:dp[i][j]:在容量为j的时候我们选择前i件物品可以获得的最大的价值状态转移

2016-09-17 10:21:45 482

原创 HDU4508-完全背包

Question:标准的完全背包水题Code:#include"iostream"#include"cstdio"#include"cstdlib"#include"cstring"#define N 105 using namespace std;int n;int v;int weight[N];int value[N];int dp[100005];i

2016-09-17 09:18:53 298

原创 NYOJ983-首尾相连的最大子数组和(升级版子数组和)

Question:本体是最大子数组和的升级版,我们这里允许数组首尾相接,那么这里面就会涉及到更多地知识点Solution:首先,我们定义的状态和状态转移方程不变定义状态:dp[i]:以第i位作为结尾的最大子数组和(连续的子数组)状态转移方程:if dp[i-1]else dp[i]=dp[i-1]+data[i]在本题中我们加入了一些处理的技巧,首先,既

2016-09-16 14:07:17 346

原创 POJ3069-贪心水

Question:本体摘自《挑战程序设计2.2.4》,详情见书求最少的标记点覆盖所有的点Solution:我们这里采用的贪心思路是每次从起点开始贪半径,找到我们的原点之后,在贪右边,找到下一次的起点Code:#include"iostream"#include"cstdio"#include"cstring"#include"cstdlib"#include"alg

2016-09-16 12:12:12 495

原创 POJ3278-BFS容易出现思维漏洞

Question:本体是标准的三个入口的BFS水题,但是细节问题太多Solution:1.数组没必要太大,一旦RE了,是因为出现了这么几种情况,出现负数,因为题中声明不会有负数的出现,把负数的情况短路掉还有就是我们一不小心越界,这时候,我们和上一种一样,我们需要先预判短路,再进行下标访问2.记录数组是很有必要的,防止TLE3.小心n,k相同点额情况,此时输出

2016-09-16 10:37:12 901

原创 POJ3009-DFS

Question:本体算是比较难的DFS搜索题目了,首先本体不能用BFS来进行搜索,因为我们每次的状态导致的地图都是不一样的改变,我们只能利用DFS来穷举,但是有的同学可能会害怕DFS在该地图自由度非常高的情况下会超时,其实大家不要担心,因为题目中已经给了我们10者个限制,这个10就是来帮助我们进行剪枝的Solution:DFS穷举每一种情况,每一次碰撞记得改变地图,此外及时标准的 搜

2016-09-16 10:16:15 317

原创 POJ1321-DFS八皇后变种

Question:本体是八皇后的变种题目,改为不规则的棋盘,但是还是要求每个妻子不能同行同列求对于对应的棋盘和妻子个数输出所有的和法的摆放的个数Solution:我们这里利用一个小技巧,我们开辟行数组和列数组,用来记录那些行和那些列别占用过剩下的就是标准的DFS了这里我第一次T是因为行数加错了,我们下一次直接从上一次的旗子的下一行开始摆放,这样节省时间Code:#i

2016-09-16 09:39:21 1260

原创 POJ2251-简单三维BFS

Question:不解释三维的地图,S是起点,E是终点,如果可以逃出,输出最短路径如果不能逃出,输出TrappedSolution:因为是要查找最短路径,所以说,这里我们采用BFS作为我们的搜索策略,本体水,没什么难度,记得开一个六个方向的移动数组就OK了Code:32MS#include"iostream"#include"cstdio"#include"cstrin

2016-09-16 09:12:29 291

原创 Java基础1-基本数据类型与操作

1.基本数据类型:基本数据类型关键字位数范围默认值Byte8-27~27+10short16-215~215-10int32-231~231-10long64-263~263-10float323.4e-038~3.4e+0380.0f

2016-09-15 20:52:28 319

原创 POJ3617-贪心字典序 水

Question:字典序贪心,大水题,注意一下题目的输出格式就好了Code:#include"iostream"#include"cstdio"#include"cstring"#include"cstdlib"#define N 2001using namespace std;int n;char data[N];int main(){ cin>>n; f

2016-09-15 16:38:23 326

原创 NYOJ 44 & 104 - 最大连续子串和(矩阵最大子矩阵和)

1.NYOJ44-最大连续子串和两种解法:1.归并:(运行时间比DP长O(n*lgn),但是耗用内存小,好吧,其实dp不用开很大内存,O(1)的dp也可以解决,总体来说,dp更好一些)无非三种情况,最大连续子串在mid左边,最大连续子串在mid右边,最大连续子串横跨左边和右边递归调用即可Code:#include"iostream"#include"cstdio"

2016-09-15 14:39:45 394

原创 NYOJ17-LIS优化

Question:求单调递增的LIS的优化方法,不要朴素的,会超时Solution:定义状态:dp[i]:长度为i的最长单调递增子序列的最后一个元素(保证这个元素是最小的,贪心的思路)状态转移方程:这个比较难写,我从原理的角度出发,解释一下我们这里会发现,定义的这个状态一定是一个递增的序列,也就是说,我们在查找的额时候完全可以利用二分查找来优化我们的时间复杂度,二分查找

2016-09-15 11:46:39 517

原创 POJ2386-简单BFS/DFS

Question:对于一个图,八个方向代表相邻,求出相邻的块的个数Solution:BFS/DFS搜索,我们对图整个进行扫描,一旦发现了'W‘,我们进入搜索函数,对周边的额八个方向整体进行扫描,并同步修改图,当我们扫描完整个图的时候,我们也就计算出来了块的个数Code:#include"iostream"#include"cstdio"#include"cstdlib"#

2016-09-15 10:51:44 2284 1

原创 挑战程序设计 1.6.1

Question:给出几段长度,请将这些长度拼接成周长最大的三角形,并输出最大的周长Solution:1.朴素解法O(n^3)时间复杂度的枚举方法,枚举所有的情况进行判断,从而选择出最优秀的那种方案核心代码:for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) { if(j==i) continue; for(int k=1

2016-09-15 09:43:04 378

原创 LCS问题求解-动态规划

1.何为LCS问题:在求解LCS问题之前,我们需要先了解一下什么叫做最长公共子序列最长公共子序列:用我们最容易通俗理解的话语来解释的话,最长公共子序列就是两个或者多个串中,最长的相同的子序列ps:子序列可以不连续,但是有先后的次序关系LCS问题应用非常的广泛2.如何求解LCS问题:1.暴力搜索LCS问题如果我们只仅限于两个的=字符串的话,我们的首先的思考的策略是

2016-09-15 00:11:54 6929 2

原创 高精度总结

Copy from others:我们都知道 int类型占32bit 可表示范围: [-2147483648,2147483647] long long类型 64bit可表示范围:[-9223372036854775808,9223372036854775807]int可以完整表达9位数字,long long可以完整表达18位。(完整表达的意思是能表示到该位的任意数字)

2016-09-12 16:13:27 426

原创 NYOJ995-经典DP

Question:输入:n,v分别代表硬币系统中的面值的种类数目和要凑的零钱的总数之后n个数字代表硬币系统输出:如果可以通过该硬币系统找零,请求出最少需要的硬币个数,否则输出最好的情况下,我们还剩下多少的硬币没有找(最小值)Solution:经典的动态规划思想定义状态:DP[i]代表找i零钱需要的最少的硬币的个数,如果不能找的话,DP[i]就是-1

2016-09-12 13:11:43 462

原创 NYOJ214-LIS优化

Question:标准的LIS问题,最长公共子序列求最长的子序列的长度Solution:本题考得不是我们朴素的O(n*2)的动态规划的思路,本题考查的是LIS的O(n*lgn)的优化思路在大数据10 0000的数据量下,朴素的动态规划明显超时Code1:#include"iostream"#include"cstdio"#include"cstring"#de

2016-09-12 10:06:17 483

原创 NYOJ18-动态规划水

Question:经典的数塔问题,我们经典的额dp求解思路Solution1:从上往下定义状态:DP[I][j]在第i层的第j位置处,我们的路径上的最优的价值状态转移方程:DP[i][j]=max(DP[i-1][j],DP[i-1][j-1])+map[i][j]Code1:#include"iostream"#include"cstdio"#include"

2016-09-11 22:30:57 352

原创 NYOJ252-动态规划水

Question:给出定义01串,01串中不存在11这种子串,求长度为n的01串中满足定义的要求的01串的个数是多少Solution:思考之后,发现其实是标准的斐波那契数列首先定义状态:DP[i]:长度为i的01串中满足条件的01串的个数是多少状态转移方程:DP[i]=DP[i-1]+DP[i-2]这么理解:1.当前的第i位是1的时候,为

2016-09-11 21:50:35 369

原创 HDU2602-01背包基础

Question:输入:首先输入测试用例的个数其次一次输入物品的个数N和背包容量V随后输入的n个数代表每个物品价值最后的输入的n个数代表每个物品的体积要求输出背包最多可以携带多大价值的物品Solution1:01背包的思想:定义状态:DP[i][j]:代表在背包的容量为j的情况下,在取第i个物品的时候,我们最大可以携带的物品的总价值状

2016-09-11 20:53:24 297

原创 POJ2488——简单DFS

Question:题目中给出了国际象棋的地图,要求我们将马按照他的走子方式进行移动,能够将整个棋盘走遍则我们将走姿方式按照字典序进行输出,否则输出impossibleSolution:本题主要考察的是方向数组的顺序,首先,我们需要明确一点,如果我们要按照字典序进行输出的话并且还要踩遍整个棋盘,我们那必定会经过A1点,所以说我们的顺序必定是开头是A1的一组字典序顺序按照上图的

2016-09-11 14:51:30 408

原创 POJ3253——哈夫曼思想的优先队列

Question:给一串数,求出哈夫曼树的总代价Solution:贪心的哈夫曼思想,我们利用对来进行优先队列的维护ps:本题中因为虽然限定了每个木块的长度在int型范围内,但是随着我们不断的加和,该数值会超过int的范围,所以说我们用long long 来八寸最后的统计结果,不然会爆掉Code:#include"iostream"#include"cstd

2016-09-11 11:24:53 374

原创 2016BIT小学期——博弈DP(污神Alice和Bob)

1.题目描述:Alice: 上课好无聊啊!!!Bob:那你想干嘛?Alice:我们来玩游戏好伐?Bob:好哇!咋玩?Alice:我们写n个正整数,然后轮流拿数字,每次可以拿任意多个,每次的得分是这次拿的数字中的最小值,我们俩每次拿数都要让自己的得分与对方的得分差值最大化,我俩试着拿一拿看看最后我比你高多少分吧~Bob:我拒绝,这明明O(瞬间)就知道答

2016-09-10 23:19:51 3510

原创 2016BIT小学期——电话号码问题(哈希+位运算)

1.题目描述:商业单位需要容易记忆的电话号码,有一些方法可以让电话号码变得更容易记忆。譬如,可以把电话号码写成单词或短语,如 MON-GLOP 可以代表滑铁卢大学的电话。有时仅仅是把号码的一部分写成单词,如打 310-GINO 便可向 GINO 比萨饼店定购比萨。另一种让电话号码容易记忆的方法是将数字用一种容易记的方式组合起来,譬如 3-10-10-10 也

2016-09-10 23:17:02 3794 2

原创 NYOJ1100-BFS+优先队列

1.题目描述:WAJUEJI which home strong!时间限制:1000 ms  |  内存限制:65535 KB难度:2描述在一个山沟里,姐弟俩同时考上了大学。但由于家里拮据,所以这并不是什么好消息。父亲对孩子说:我就是砸锅卖铁也要把你们姐俩供出来。 当时的姐姐已经决定放弃上学的机会。 没想到第二天天还没亮,弟弟就偷偷带著几件破

2016-09-08 21:18:40 619

原创 哈夫曼(最优二叉树)

最优二叉树:定义:路径:数的路径就是从书中的一个节点到树中的另一个节点的分支的个数长度,路径上的分支数目我们称之为长度树的路径长度:从树根到每一个节点的长度之和(完全二叉树是一种树的路径最短的二叉树)节点的带权路径长度:从根节点到该节点的路径的分支数目与节点的权值的乘积树的带权路径的长度:树中的所有的节点的带权路径长度之和,并且,我们将改长度定义为WPL最优二叉树(哈夫曼树

2016-09-08 16:15:48 3982

原创 NYOJ801-哈夫曼编码(贪心AC)

1.题目描述:Haffman编码时间限制:1000 ms  |  内存限制:65535 KB难度:3描述哈弗曼编码大家一定很熟悉吧(不熟悉也没关系,自己查去。。。)。现在给你一串字符以及它们所对应的权值,让你构造哈弗曼树,从而确定每个字符的哈弗曼编码。当然,这里有一些小规定:1.规定哈弗曼树的左子树编码为0,右子树编码为1;2

2016-09-08 15:50:18 946

原创 POJ2388-排序水题

1.题目:奇数个数排序求中位数2.三种排序方法:1.快排 700k 16Ms#include"iostream"#include"cstdio"#include"cstring"#define N 10010using namespace std;int data[N];int n;void quicksort(int left,int right){

2016-09-08 11:19:30 1258

原创 NYOJ1129-很新颖的DFS

1.题目描述:Salvation时间限制:1000 ms  |  内存限制:65535 KB难度:3描述         神秘瀑布镇是一个神秘的地方,那里有吸血鬼,狼人,巫师,二重身。 Klaus(吸血鬼祖先) 为了利用 Elena 的血液发展他的混血大军(吸血鬼&狼人),也来到了神秘瀑布镇。Stefan 因为深爱着 Elena ,于

2016-09-08 10:31:17 412

原创 POJ3026-最小生成树+BFS

1.蛋疼的题目:这道题有两个蛋疼的地方1.出题者脑残了,看来discuss才知道,WA了这么多原来是真是数据后面不止一个空哥个和换行2.数据大小根本不是100,要比100大,尽量开大吧2.算法思路:1.题意:在一个迷宫里,起点是S,A代表外星人,我们需要找到最短的路径将S和所有的A连接起来,输出最短的这个路径总长2.思路:1.首先,我们需要利用BFS对图进行预处理,

2016-09-07 22:35:49 673

原创 POJ1258-最小生成树水题

#include"iostream"#include"cstdio"#include"cstring"#define inf 99999999using namespace std;int map[510][510];int dis[510];int n;int sum;int book[510];int main(){ while(scanf("%d",&n)!=E

2016-09-07 20:40:45 279

原创 POJ2485-最小生成树水题

1.算法:本体已经给你邻接矩阵了注意要点:1.本题中图是边护很多的图,所以说,本体使用Krustral算法不太理想,我们要排序的边实在太多了,所以说我们采用Prim算法2.本题的求解题意是求出最小生成树中的最大边,我们对求最小生成树的算法稍加改进就可以AC2.AC代码#include"iostream"#include"cstdio"#include"cstring"

2016-09-07 20:36:46 386

原创 2016BIT 小学期 —— 编程珠玑 动态规划基础

1.题目描述12.编程珠玑成绩10开启时间2016年09月6日 星期二 11:00折扣0.8折扣时间2016年09月12日 星期一 23:55允许迟交否关闭时间2016年10月10日 星期一 23:55你有一条项链,它由 N 个随机排列的红、白和蓝色的珠子组成(3

2016-09-07 18:18:44 1113

原创 POJ1789——最小生成树

1.题意:输入:n输入,代表有n个长度为7的字符串,我们以字符串本身为结点,题中定义了两个节点之间的距离,定义为两个字符串中相同位置处不同的字符的个数,所以我们发现本题是个非常稠密的图我们直接用二维矩阵记录所有的数据比较能够大米毒的合理利用空间输出最小生成树的倒数2.算法:本题中我们会发现,边的数目非常的庞大这就引出了一个问题Krustral算法要涉及到排序,如此大

2016-09-04 18:22:34 437

原创 POJ2421——最小生成树复习

1.题目:村庄之间有些路,有的已经修过了输入n代表村庄的数目之后n*n代表村庄之间的道路的长度的矩阵输入q之后q行代表已经修过路的两个村庄的标号求最小生成树2.算法:Krustral不解释3.AC代码:#include"iostream"#include"cstdio"#include"cstring"#define N 105using

2016-09-04 12:28:59 358

Code from Python - 详细读书笔记

本人复习资料以及读书笔记,欢迎批评指针,转载请注明出处

2017-02-10

从零开始学SBT

本论文从多个方面详细的阐述了如何从BST一步一步的了解并写出SBT的数据结构框架,非常的浅显易懂,文后附上了全部的封装代码以及复杂度和数据结构的理论正确性的证明

2016-08-18

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除