自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

靖空间

降低成功的时间复杂度,提高生活的空间复杂度

  • 博客(110)
  • 资源 (5)
  • 收藏
  • 关注

原创 codechef : Marbles 题解

本题是一题组合数学的题目。应用到比较高级一点的数学知识。可以认为是一题indistinguishable objects to distinguishable boxes 把相同的物体放进不同盒子的问题。这样应用公式是:C(n, n+k-1) = C(k-1, n+k-1),n代表物体k代表盒子但是因为需要每个盒子最少必须放置一个物体,故此减去每个盒子的这一个球,就得到公式:C(k-1, n+k-1-k)这样就可以简化为计算一个公式的问题了。注意: 这里是相同物体放进不同盒子,所以比较简单,注意区

2014-05-31 17:06:44 1514

原创 Design Pattern Chain of Reponsibility 责任链模式

本程序实现一个责任链模式查询人名的资料。开始都是查询第一个人,问其是否有某人的资料,如果有就返回结果,如果没有第一个人就会询问第二个人,第二个人的行为和第一个人的行为一致的,然后一致传递下去,直到找到答案,或者是最后没有资料,返回。首先创建一个基类://base class class Person{public: virtual void getInfo(string

2014-05-31 15:50:18 1196

原创 Splay Tree的删除操作

Splay Tree的插入操作,搜索操作,和删除操作都实现了,那么就可以使用来解题了。指针的删除操作的处理还是那么难的,很多坎需要避开.同一个坎还是坑了我好多次,就是指针传递的问题,什么时候需要修改指针本身的值,就必须返回指针或者传递指针的指针,或者传递指针的的实参。这里的删除操作就是需要改变传递到函数的指针本身的,所以我这里使用了返回指针操作。还有删除树的问题,之前的代码没做删除

2014-05-31 13:41:37 3403

原创 Trie 字典树 删除操作

字典树的删除操作:1 没找到直接返回2 找到叶子节点的时候,叶子节点的count标志清零,代表不是叶子节点了3 如果当前节点没有其他孩子节点的时候,可以删除这个节点判断是否需是叶子节点,就检查叶子节点的count标志就可以了。判断是否有其他孩子节点就需要循环26个节点了,如果都为空,那么就没有其他孩子节点了。#include #include #include

2014-05-30 20:48:18 7170

原创 OpenGL 实现Interpolation插值算法

这是一个静态插值算法的效果,图形学中插值算法应用十分广,如动画,photoshop, autocAD等软件画曲线,还有shader中的渐变上色也是一个硬件支持的插值算法。Interpolation是很低层的算法,在图形学中可以说无处不在。本程序通过设置两个vector,然后就可以在这两个vector之间插入点,得到不同的效果如两个vector不同长度可以得到:如果长

2014-05-30 18:25:22 3460 2

原创 codechef - Bytelandian gold coins 题解

本题使用动态规划法, 或者记忆法,加上递归法。不加上递归法,好像很麻烦,因为我们不知道其初始值,只知道其最终值,所以只能往下递推了,这样使用记忆法就比动态规划要方便了。使用二维表设计其递归记忆表,防止重复计算。还是十分困难的,动态规划法有时候不一定比记忆法要好。递归记忆法的学名: top-down with memoization; Introduction to Algorithm的Dynamic programming 这章有介绍

2014-05-30 14:51:56 1457

原创 Geeks Splay Tree Insert 树的插入操作

Splay树的插入操作,只需要处理好插入节点的孩子节点就可以了,最重要的是不要破坏了BST的基本规则。因为高度并不是Splay树的首要因素,所以插入的时候也是使用splay操作,然后在根节点插入。参考:http://www.geeksforgeeks.org/splay-tree-set-2-insert-delete/对比一下使用插入创建的树和手工创建数的区别,先序遍历的结果

2014-05-30 12:40:10 2355

原创 codeforces The Wall - 题解

这是一道简单题,也隔了一段时间没做简单题目了。这次感觉又不一样了,可以很快就能写出很优雅的代码了,故此很想贴贴自己的代码。优雅代码的关键就是要利用数学的思想去解:本题的实质是可以转化为求最大公倍数的的问题,然后利用Inclusion-exclusion(包含和不包含)的原则,计算有多少个数能被a除尽这个公倍数,有多少个数能被b除尽这个公倍数,然后相减就得到最终答案了。

2014-05-29 16:46:34 1255

原创 OpenCL 获取Program信息

本程序生成一个OpenCL Program,然后获取Program的source,其实它的source就是一个char[],可以打印出来。然后我们把这些内容和原来文本的内容对比,看看是否是我们想要读入的内容。还可以测试是否编译正确,如果不正确会有输出提示的。

2014-05-29 15:20:28 1965

原创 OpenCL 操作context

本程序主要测试:context = clCreateContext(NULL, 1, &device, NULL, NULL, &err);创建一个contextclRetainContext(context);//Context的reference +1clReleaseContext(context);//Context的reference -1#inc

2014-05-29 14:22:02 3180

原创 Geeks : Dijkstra’s Algorithm for Adjacency List Representation 最短路径

最短路径的O(ElgV)的解法。使用邻接表存储图,使用堆操作选取下一个最小路径点。本题的难度并不在最短路径本身这个算法,而是在于堆的操作:1 使用双重指针操作堆的节点,可以省去直接复制操作堆节点,提高效率,并且这才是有效操作动态地址数据的方法,不用双重指针,我思考了下,觉得更加不好做。2 使用一个数组记录当前顶点在堆中的位置,相当于一个hash表了,可以需要的时候,直接从表中查找表

2014-05-29 14:01:00 1770

原创 OpenCL 查看设备信息

好久没搞OpenCL了,但是这是个好东西,不能不学,之前发了篇设置OpenCL的文章,看的人还真多,看来大家都知道这个好东西了,都想把OpenCL搞起。不过学习难度还是相当高的。之前忙搞算法,所以很多其他知识就暂且搁置了,不过告诉大家一个秘密:自从用了靖心博客之后,腰不酸,腿不疼了……啊,不好意思,谁插播了广告,我是说自从学好算法之后,看OpenCL,OpenGL, DirectX头不疼,脑不

2014-05-28 20:01:54 7263

原创 OpenGL 5: Shader画心形

初始化Open Program的四个函数:GLuint shaderProgram = glCreateProgram();glLinkProgram(shaderProgram);glValidateProgram(shaderProgram);glUseProgram(shaderProgram);这样创建并使用了一个Open GL Program ,这里是用来装 GL sha

2014-05-28 15:25:15 3685

原创 Design Pattern 设计模式 Decorator 装饰者模式

1 设计一个基类2 继承这个基类,并包含这个基类的一个对象3 创建继承类的时候,初始化这个基类,因为是基类指针,所以可以是所有基类的衍生类对象,那么就可以叠加任意多个衍生类对象了。关键是在衍生类中包含一个基类对象,然后有了继承和包含两重关系,可以使得一个类一个类对象叠加,达到装饰目的。等于是创建了一个对象指针链表,一个一个对象发挥其相应的作用。下面程序装饰一个桌

2014-05-28 12:04:46 1138

原创 Dijsktra 最短路径和堆算法

下面是使用矩阵存储图信息,然后使用堆搜索下一个最短路径的算法,其中堆的实现使用priority_queue容器:#include #include #include using std::

2014-05-28 10:10:39 1598

原创 Poj Double Queue 3481 AVL解法

本题应该挺经典的,因为可以使用好多方法过,适合训练多种高级数据结构和算法。这里使用AVL平衡二叉树的解法,时间还可以,大概300ms吧,内存很省188k,因为这里使用指针,没有浪费内存。这里使用Geeks上面的AVL的做法,使用递归更新树,而不使用双亲指针,试了下使用双亲指针,真的好麻烦,要维护多一个指针,容易出错很多。递归操作二叉树是非常优雅的。而且不需要使用任何STL容器,非常

2014-05-27 18:24:21 1450 1

原创 Geeks - AVL Tree Deletion 平衡二叉树 删除操作

注意:1 判断一个节点是否平衡的方法2 平衡一个节点的方法 :我这里比原文改进一点,独立出一个平衡节点的函数balanceNode(),这样一个函数可以用来平衡插入和删除操作,使得代码更加简洁了。这样修改之后就使得平衡二叉树好像和一般二叉树的操作比较,就是多了一个平衡操作。3 删除操作情况很多,很困难,一定要理清思路。十分容易出bug的地方。这里是查找后继节点的值,填补上到

2014-05-27 10:41:36 1340

原创 Geeks - AVL Tree Insertion 平衡二叉树

AVL可以保证搜索达到O(lgn)的时间效率,因为两边的树高都差不多。不会出现搜索是线性的最坏情况。但是AVL在插入和删除节点的时候需要做较多的旋转操作,所以如果修改节点多的时候,最好使用红黑树,但是如果搜索多的时候,就最好使用AVL了。

2014-05-26 19:14:33 1217

原创 HDU Simple Addition Expression 题解

给出一个数N,求小于这个数的一个数i 是的i + (i+1) + (i+2)中每个数位相加都没有进位。原题:http://acm.hdu.edu.cn/showproblem.php?pid=2451使用动态规划法是不难的。等于是有两条探索路径的动态规划法问题,初级动态规划就能搞定了,这里不讲了。要学好数学,所以这里使用组合数学求解,但是很麻烦的就是如何思考计算。关

2014-05-26 14:20:31 985

原创 Codechef A Simple Equation 题解

A Simple EquationGiven N,A,B,C, find how many solutions exist to the equation : a + b + c ≤ N, such that 0 ≤ a ≤ A, 0 ≤ b ≤ B, 0 ≤ c ≤ C.InputThe first line contains the number of test c

2014-05-26 10:34:18 1143

原创 Codeforce E. Lucky Queries 线段树实践

E. Lucky QueriesPetya loves lucky numbers very much. Everybody knows that lucky numbers are positive integers whose decimal record contains only the lucky digits 4 and 7. For example, numb

2014-05-25 21:49:18 1119

原创 OpenGL 4 : 一个美丽的心 For you, My Love

画一个心形有很多公式可以使用,下面这个公式我认为最完美了:float x = R * 16 * pow(sin(theta), 3);float y = R * (13 * cos(theta) - 5*cos(2*theta) - 2*cos(3*theta) - cos(4*theta));画出来的心形最漂亮,最原始的笛卡尔的心形是个肥心,没这个好看,呵呵。效果如下:

2014-05-25 12:41:33 1724

原创 OpenGL 3:画圆

这次使用OpenGL画圆,并且中间画一个实心的五角星。1. 画实心五角:因为之前使用Polygen画会出现问题,也许是各个GPU硬件也会不一样的,所以使用Polygen画实心五角星并不可靠;所以这里直接使用三角形画出五角星,不需要Polygen。2 画圆因为GLEW里面没有现成的圆形,所以只能使用人工定顶点,然后画圆的方法;其中的数学原理可以参考这里:http://slab

2014-05-24 21:29:28 4945 1

原创 2014 百度之星 题解 1004 Labyrinth

Problem Description度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向上向下向右走以前没有走过的格子,每一个格子中都有一些金币(或正或负,有可能遇到强盗拦路抢劫,度度熊身上金币可以为负,需要给强盗写欠条),度度熊刚开始时身上金币数为0,问度度熊走出迷宫时候

2014-05-24 13:09:25 1144

原创 Geeks : Kruskal’s Minimum Spanning Tree Algorithm 最小生成树

寻找图中最小连通的路径,图如下:算法步骤:1. Sort all the edges in non-decreasing order of their weight.2. Pick the smallest edge. Check if it forms a cycle with the spanning tree formed so far. If cycle is n

2014-05-24 12:10:16 2122

原创 OpenGL二 - 画一个五角星 pentagram

使用数学计算出10个五角星的坐标,然后画出图形。效果如下:一直想使用Polygen画是实心的,但是Polygen对于凹的地方支持不好,会出问题,所以就使用直线画了。数学计算可以参考一个百度提问:http://zhidao.baidu.com/link?url=tDFNJu1UzgMaxkDvKWTVadaSwmkEpn1tLL6M-5e85M_ZcE6UHhmm7W6N

2014-05-23 21:16:23 3727

原创 2014 百度之星 1003 题解 Xor Sum

Xor SumProblem DescriptionZeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。Prometheus 为了让 Zeu

2014-05-23 10:54:19 1620 1

原创 OpenGL一: 初始化窗口,简单画图

由简单的程序开始,下苦功夫,手打上百个程序再说,看看效果如何。这个图形的效果如下:像一个小杯子的,很简陋,杯口是一个基本图形多边形polygen,杯身是一个线条Line Strip纯粹手工确定点画成的。

2014-05-22 20:41:06 3211 2

原创 Design Pattern - Observer 观察者设计模式

Spy on enemy.使用这个模式可以根据某些事件自动更新。设计思路:1 设计一个基类,作为需要观察一个时间行为的接口类2 设计一个观察者类,可以观察所有基类的衍生类, 这里使用set来保存这些需要更新的类。一个事件相当于一个函数,事件发生(调用函数)同时自动调用需要更新的函数动作。#pragma once#include #include #inclu

2014-05-22 18:45:56 1150

原创 Codeforces A. Valera and X 题解

判断二维字符串是否满足下面条件:on both diagonals of the square paper all letters are the same;all other squares of the paper (they are not on the diagonals) contain the same letter that is different from the

2014-05-22 13:25:37 925

原创 Geeks Union-Find Algorithm Union By Rank and Path Compression 图环算法

同样是查找一个图是否有环的算法,但是这个算法很牛逼,构造树的时候可以达到O(lgn)时间效率。n代表顶点数原因是根据需要缩减了树的高度,也叫压缩路径(Path compression),名字很高深,不过其实不难理解,简单来说就是每次查找一个节点的时候,都把这一路径中的所有节点都赋予根节点作为路径。原文没指出的地方:也因为需要压缩,所以初始化的时候注意,不能如前面简单实用Unio

2014-05-22 10:34:48 2310

原创 Design Pattern - Factory - 设计模式 - 工厂

Create All kinds of guns.设计重点:1 基类作接口2 继承类是各种不同的类3 构建工厂类,然后根据需要创造不同的类,可以传入关键字,或者索引等。#pragma once#include #include using namespace std;//Base classclass Gun{public: virtual stri

2014-05-21 18:58:02 1038

原创 Geeks - Union-Find Algorithm - Detect Cycle in a an Undirected Graph算法

利用Union Find的方法查找图中是否有环。在于构建一个图数据结构,和一般图的数据结构不同的是这个图是记录了边的图,并在查找过程中不断把边连接起来,形成一个回路。原文地址:http://www.geeksforgeeks.org/union-find/#pragma once#include #include #include #include class Un

2014-05-21 11:09:46 1742 3

转载 年薪120W,本科生 公司 Jane Street Capital

转帖~~~ 不过,事情应该是真的,年薪120W,本科生。 首先说明一下,我本来是浙大计算机2008级的学生,后来因为无法按时毕业延期了一年,于是就变成了2013年毕业,所以今年才开始找工作。 然后剧透一下,我最终选择的未来雇主是 Jane Street Capital,职位是 Assistant Quantitative Researcher,工作地点在香港。 以下开始

2014-05-20 20:44:30 26730 5

原创 2014 百度之星题解 1002 - Disk Schedule

Problem Description有很多从磁盘读取数据的需求,包括顺序读取、随机读取。为了提高效率,需要人为安排磁盘读取。然而,在现实中,这种做法很复杂。我们考虑一个相对简单的场景。磁盘有许多轨道,每个轨道有许多扇区,用于存储数据。当我们想在特定扇区来读取数据时,磁头需要跳转到特定的轨道、具体扇区进行读取操作。为了简单,我们假设磁头可以在某个轨道顺时针或逆时针匀速旋转,旋转一周的时间

2014-05-20 13:20:07 1573

原创 Geeks - Detect Cycle in a Directed Graph 判断图是否有环

Detect Cycle in a Directed Graph判断一个图是否有环,有环图如下:这里唯一注意的就是,这是个有向图, 边组成一个环,不一定成环,因为方向可以不一致。这里就是增加一个数组保存当前已经访问过的路径信息 recStack[];而visited[]数组是访问过的点的信息,两者作用是不一样的。助理这个知识点,这道题就很容易了。原文:h

2014-05-20 10:04:21 2993

原创 2014 百度之星题解1001 - Energy Conversion

Problem Description  魔法师百小度也有遇到难题的时候——  现在,百小度正在一个古老的石门面前,石门上有一段古老的魔法文字,读懂这种魔法文字需要耗费大量的能量和大量的脑力。  过了许久,百小度终于读懂魔法文字的含义:石门里面有一个石盘,魔法师需要通过魔法将这个石盘旋转X度,以使上面的刻纹与天相对应,才能打开石门。  但是,旋转石盘需要N点能量值,而为了解读密

2014-05-19 15:37:14 1892

原创 UVa - 457 - Linear Cellular Automata 题解

本题大概题意:给出一个数组DNA,包含10个数值,如:DNA[10] = {0,1,2,3,,1,2,3,0,1,2}所有数值应该不大于3.给出一行40个字符的字符串: 空格代表0, '.'代表1,'x'代表2,'W'代表3。 相邻三个数值(或两个数值)相加得到的数作为DNA的下标,然后取DNA数组改下标的数值为新的值。产生新的字符串。好难说清楚,看原文吧,的确是很难理解的题目:h

2014-05-16 20:15:03 1175

原创 Segment Tree - Sum of given range

简单点说其实Segment Tree就是二分法的灵活运用。需要的基础知识:1 二分法2 二叉树3 最好熟悉堆排序操作就是二分法和堆排序巧妙地合并起来。有了这些基础知识Segment Tree就没有任何难度了。参考原文:http://www.geeksforgeeks.org/segment-tree-set-1-sum-of-given-range/

2014-05-15 10:16:53 1464

原创 William Stallings 博士介绍 及 关于一些计算数学基础性的材料 -

出处     http://williamstallings.com/StudentSupport.html 这份材料是我在帮美国MIT的William Stallings博士翻译站点的时候的一部分内容,感觉对国内的学生帮助会很大。写给大家,希望能对大家有所帮助。材料中涉及的所有内容版权归原作者所有,收集信息的版权归William Stallings博士所有。 ------------

2014-05-13 16:54:09 2573 1

OpenGL完美的心形

可以参考本人博客: http://blog.csdn.net/kenden23/article/details/27338943 是一个使用OpenGL FreeGlut画的一个完美的心形。

2014-05-28

简单Windows弹球程序

详细描述,请看下面博客: http://blog.csdn.net/kenden23/article/details/17268877

2013-12-14

第一人称3D镜头框架代码

http://blog.csdn.net/kenden23/article/details/14051187 这个博客讲解的代码框架。讲解的类部分另外下载,可在博客上找。

2013-11-02

第一人称3D镜头类

http://blog.csdn.net/kenden23/article/details/14051187 这个博客讲解的代码,可以实现一个3d漫游第一人称视觉的类。一个镜头类,可以控制3D视觉,实现漫游效果

2013-11-02

算法问题集合源文件 堆排序 吊桶排序 最大子段和等

这个是本博客算法专栏的部分.cpp源文件,方便大家打包下载,如果没有积分的话,可以到我博客粘贴,博客有完整的代码。 http://blog.csdn.net/column/details/billsalgorithm.html?page=1#12944927 这里是部分源文件,暂时没时间全部做好。 可以直接加入项目运行的,建议使用vs2012编译。

2013-10-22

空空如也

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

TA关注的人

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