自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

靖空间

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

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

原创 POJ 1952 BUY LOW, BUY LOWER 动态规划题解

DescriptionThe advice to "buy low" is half the formula to success in the bovine stock market.To be considered a great investor you must also follow this problems' advice:  "Bu

2014-11-12 18:15:19 1578

原创 POJ 3268 Bookshelf 2 动态规划法题解

DescriptionFarmer John recently bought another bookshelf for the cow library, but the shelf is getting filled up quite quickly, and now the only available space is at the top.FJ has N cows (1 ≤ 

2014-11-12 08:30:52 1671

原创 POJ 2914 Minimum Cut 最小割图论

本题是06年百度之星半决赛的题目,图论的最小割问题,算是图论高级内容吧。Stoer Wager算法,其中的难点是:1 逐条边查找最大的边的权值-过程有点想Prime算法,不过实际上不是Prime算法,因为目的并不是最大生成树,而是需要把一个顶点的所有边都加起来,把这些边去掉,就是这个顶点的割点值了。那么就需要遍历整个图,到了最后一个节点才能保证是找到了这个节点的所有边。2 缩点:所谓缩点就是把最后一个节点去掉,同时保留其边值信息,实际就是保留这个顶点的和其他顶点相连的最小边值。比较难理解的,一般写这

2014-11-04 08:01:25 2223

原创 POJ 2553 The Bottom of Graph 强连通图题解

题意的本质是查找没有出度的强连通子图,没有出度就是sink,the bottom of graph了。就是利用Tarjan算法求强连通子图,并要用标识号标识各个强连通子图,然后记录好各个顶点属于哪强连通子图。程序带详细的注解:

2014-10-31 09:22:47 1223

原创 POJ 3984 迷宫问题 广搜迷宫解法

本题是经典的迷宫搜索问题了,使用广搜比使用深搜效率要高。思路关键点:1 从终点出发查找起点,这样方便记录路径2 每次查找到下一个空格,可走方格之后,可以马上标识该格为不可走了3 找到起点之后,马上可以返回关键是第二点为什么会成立?因为我们需要找最短路径,只要最先可以达到,那么就肯定是最短路径,不需要从其他方向进入了。

2014-10-29 09:55:37 3602

原创 POJ 1236 Network of Schools 强连通图

图论题目,需要解决问题:1 使用Tarjan算法求子强连通图2 标识顶点属于哪个子强连通图3 计算各个子强连通图的零入度数和零出度数图论中高级内容了,是有点难度的,不细心一点肯定会出错的。这次本博主认真注解好几乎每个语句,希望大家可以follow我的程序。

2014-10-26 16:43:05 1550 1

原创 POJ 2756 Autumn is a Genius 大数加减法

本题题目没明确说明有多大的数,主要是A, B < 32768迷惑人,好像不是大数,不过后面 The size of input will not exceed 50K 的这句话就说明是大数了可以为接近无穷大的负数。其实50K就应该开多大的数组呢?50 * 1024 / 8 == 6400,所以会有6400个数位。这里直接使用C++的vector或者string,然后输入使用buffer,那么就可以不管数位有多大了。大数加法比较容易,如果是减法那么题目就比较麻烦了。目前还想不到比较简洁的解法,要特殊处理

2014-10-25 07:29:46 1705

原创 POJ 3370 Halloween treats - 鸽巢原理

DescriptionEvery year there is the same problem at Halloween: Each neighbour is only willing to give a certain total number of sweets on that day, no matter how many children call on him, so it ma

2014-10-22 19:51:32 1641

原创 HDU 1030 Delta-wave 数学题解

Delta-waveTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5782    Accepted Submission(s): 2204Problem DescriptionA triangle fiel

2014-10-19 17:22:02 1501

原创 Hiho1041 国庆出游 搜索题解

题目3 : 国庆出游时间限制:1000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho准备国庆期间去A国旅游。A国的城际交通比较有特色:它共有n座城市(编号1-n);城市之间恰好有n-1条公路相连,形成一个树形公路网。小Hi计划从A国首都(1号城市)出发,自驾遍历所有城市,并且经过每一条公路恰好两次——来回各一次——这样公

2014-10-18 21:57:28 3400 2

原创 HDU Computer Transformation1041 题解

Problem DescriptionA sequence consisting of one digit, the number 1 is initially written into a computer. At each successive time step, the computer simultaneously tranforms each digit 0 into the

2014-10-11 18:04:58 1165

原创 HDU 1027 取数列问题

Ignatius and the Princess IITime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4803    Accepted Submission(s): 2885Problem Description

2014-10-10 15:46:16 1273

原创 SPOJ 15. The Shortest Path 堆优化Dijsktra

You are given a list of cities. Each direct connection between two cities has its transportation cost (an integer bigger than 0). The goal is to find the paths of minimum cost between pairs of cities.

2014-10-04 23:32:20 1660

原创 HDU Exponentiation 1063 Java大数题解

ExponentiationTime Limit: 1000/500 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6973    Accepted Submission(s): 1975Problem DescriptionProblems inv

2014-10-01 16:19:35 1884

原创 Light OJ 1004 - Monkey Banana Problem dp题解

1004 - Monkey Banana ProblemPDF (English)StatisticsForumTime Limit: 2 second(s)Memory Limit: 32 MBYou are in the world of mathematics to solve the great

2014-09-26 00:18:56 2743

原创 Codeforces 464 C. Substitutes in Number 动态规划法题解

本题使用动态规划法思想。因为需要一步一步地替换相对应的数字的,如果直接模拟,那么就需要大量插入和删除操作,最快也需要lg(n)的效率,但是最后数列就会变得非常长,这样最后计算结果遍历一次也会超时的。故此使用数据结构加速替换操作,并不是好办法。这就使用动态规划法从后往前替换,相当于路径压缩了,一步直接把数字替换成最终结果的数字。也要记录好每个数字最终替换成多少个数位,以便正确计算结果。可以画树来模拟一下替换操作,那么从叶子节点往根节点替换数字,把所有的路径都直接压缩起来。

2014-09-08 17:47:34 1956

原创 codeforce 379C New Year Ratings Change 题解

题目连接:http://codeforces.com/problemset/problem/379/C把带重复值的数列A变成没有重复值的新数列B,要求新的数列的总和是所有可行解中最小的,而且新的数列任何一个值都不能小于A数列中对应的值。思路:1 先把A数列排序,同时使用pair,或者自定义的stuct,记录好数值和下标的对应关系2 然后从A数列最小的值开始填到B数列,第一个

2014-09-04 10:31:38 1559

原创 POJ 1860 Currency Exchange BellmanFord题解

会建图,然后使用标准的Bellman Ford算法,判断负环就解决了。不过本题实际应用不是计算负环,而是计算最大值,也就是求出源点到所有点的最大收益值之后,然后判断是否可以进一步增加收益,如果可以那么证明有环可以不断反复走这个环,不断增加收益,实际就是判负环的应用了。#include #include #include #include #include #include

2014-09-02 09:52:41 1626

原创 Codeforces 347 B Fixed Points 题解

题目连接:http://codeforces.com/problemset/problem/456/B一道很容易出错的简单题。反正我是WA了几次。主要会出错的地方是,如何记录下标和值的对应关系,然后判断swap之后,两个值就是到位了(fixed points)。如 0 1 4 3 2 6 7 5,如何判断swap2和4之后,2和4就是到位了。我使用新的数列记录了原来数组的值对应到原来数组的

2014-09-02 08:22:34 1151

原创 codeforces T-primes 230 B 素数题解

题目连接:http://codeforces.com/problemset/problem/230/B本题其实是简单的找规律问题,规律一看就明白了。这个就是需要总结问题的思维能力。同时需要注意可能的溢出问题。规律总结错了,溢出问题又错了,结果就不能一次性AC了。注意:静态内存和全局内存,即栈内存,比动态内存,即堆内存,要大;动态分配一个百万的bool数组也会程序崩溃的。

2014-09-01 18:44:11 2049

原创 HDU 1867 A + B for you again KMP题解

本题又是一个典型的KMP应用。求两个字符串相加的结果,相加的规律是一个字符串的后缀和另一个字符串的前缀相同,就可以合并这个部分。不过本题的题意不是很清晰,因为没有太明确指出这两个字符串的出现顺序是无关的,只是需要输出合并后长度最短的结果,如果合并后长度一样,那么就按照字典顺序,输出字典顺序在前的字符串。思路:1 使用kmp在s2查找s1,那么最终结束的时候next table的值就

2014-08-31 16:32:16 1041

原创 Codeforces 463C Gargari and Bishops 题解

题目出处: http://codeforces.com/contest/463/problem/C感觉本题还是挺难的,需要好好总结一下。计算对角线的公式:1 右斜对角线,也叫主对角线的下标计算公式: int index = j-i; 但是为了不使用绝对值,并且分开j = 2, i = 1和j = 1, i = 2的情况,那么公式变为: j-i+n,正方形n为行数或列数2 左

2014-08-31 12:50:18 1993

原创 POJ 3181 Dollar Dayz 01完全背包问题

01完全背包问题。主要是求有多少种组合。二维dp做的人多了,这里使用一维dp就可以了。一维的转换方程:dp[j] = dp[j-i] + dp[j];其中i代表重量,j代表当前背包容量。意思就是dp[j-i] 代表j-i背包重量的时候最多的组合数,那么如果到了背包容量为j的时候,就是可以把第i个物品装进背包,那么就有dp[j-i]种装法,如果没有i物品之前,那么容量为j的

2014-08-29 11:13:47 1285

原创 HDU Bone Collector 2620 01背包

01背包模板式的题目,套模板或者直接敲就可以了。Bone Collector#include #include #include #include #include #include #include #include #include #include #include using namespace std;const int MAX_N =

2014-08-28 16:46:12 1352

原创 HDU 1203 I NEED A OFFER! 01背包题解

本题题目居然写错了也没改正,囧,应该是AN OFFER!题解就是dp加上概率论求解。因为需要求最少有一间学校录取的概率,那么就可以使用逆向思维,求没有一间学校录取的概率。基本的概率论思维,不过如果久了没做概率论还是会有点麻烦的。然后就是标准的01背包求解了:#include #include #include #include #include #include

2014-08-28 16:21:13 1142

原创 Heap 3214 LIS题解

根据问题转换成最长不降子序列问题。10^9的输入数据计算起来还是挺花时间的。因为这里只能使用O(nlgn)时间复杂度了。不过证明是可以算出10^9个数据的。因为时间限制是5s.#include #include #include #include #include #include #include #include #include #include #include

2014-08-27 10:33:42 928

原创 HDU 1059 Dividing dp背包题解

背包问题,这一类问题应用很广了。本题可以根据特例优化一下。#include #include #include #include #include #include #include #include #include #include #include using namespace std;const int MAX_N = 20001;const int

2014-08-25 15:23:03 1107

原创 HDU 1051 Wooden Sticks 贪心题解

本题一看就知道是最长不减序列了,一想就以为是使用dp解决了。不过那是个错误的思路。我就动了半天没动出来。然后看了看别人是可以使用dp的,不过那个比较难证明其正确性,而其速度也不快。故此并不是很好的解决方法。所以我就直接硬算,硬模拟选择出非减子序列,选完就出答案了。思路:1 按照长度排序2 按照不减原则选择重量,选一个,消灭一个。最后消灭完了,就处理完毕,答案就自然出来了。

2014-08-24 10:11:27 1191

原创 POJ 1952 BUY LOW, BUY LOWER DP记录数据

最长递减子序列,加记录有多少个最长递减子序列,然后需要去重。最麻烦的就是去重了。基本的思路就是:全面出现重复的值,然后还是相同长度的子序列,这里的DP记录的子序列是以当前值为结尾的时候,并且一定选择这个值的最长递减子序列, 那么就需要减去前面已经出现过了的子序列。有点绕口。举例就是9 8 9 8 2 和 10 5 12 5 3;这些例子去重。本类型的题目如果不用记录数据是可以使

2014-08-24 00:16:53 1133

原创 HDU 1047 Integer Inquiry 大数相加 string解法

本题就是大数相加,题目都不用看了。不过注意的就是HDU的肯爹输出,好几次presentation error了。还有个特殊情况,就是会有空数据的输入case。#include #include #include #include #include #include #include #include #include #include #include using

2014-08-23 00:14:21 1404

原创 HDU 1045 Fire Net 二分图Bipartite题解

本题可以使用DFS直接爆搜出答案,不过这样类型的题目其实是个二分图的题解。这个二分图,难不在Hungary算法,而是难在于建图。需要挺高的抽象思维的。建图:1 把同一行不被X分开的格子标同一个号码,被X分开的标下一个号码,这样做是为了缩点,不需要把所有的格子都分开标号,而且可以更方便建个更加小的图。2 同理把同一列的格子标号3 然后判断相同一个格子的行标号和列标号是有路径的,其

2014-08-22 23:13:49 1143

原创 HDU 1041 Computer Transformation 数学DP题解

本题如果编程是使用DP思想直接打表就可以了。如果是找规律就需要数学思维了。规律就是看这些连续的0是从哪里来的。我找到的规律是:1经过两次裂变之后就会产生一个00; 00经过两次裂变之后也会产生新的00;故此需要记录好1和00出现的次数就可以递推出后面的00出现的数据了。公式就是tbl00[i] = tbl00[i-2] + tbl1[i-2]; 其中tbl00是记录00出现的次数,

2014-08-22 11:17:59 1380

原创 HDU 1035 Robot Motion Union Find 并查集题解

本题的类型我一看就想到使用并查集解了,因为要查找是否有环,这是并查集的典型用法。但是由于本题数据实在是太水了,故此有人使用直接模拟都过了。这让本题降了个档次。这里使用并查集解。而且可以根据需要简化并查集函数,代码还是很好打的。#include #include #include #include #include #include #include #includ

2014-08-21 16:43:13 981

原创 HDU 1034 Candy Sharing Game 模拟题

一个分糖游戏,找了会规律,没找到,只能直接模拟玩了。果然0ms过了,看来数据不大,只是考编码能力罢了。#include #include #include #include #include #include #include #include #include #include #include using namespace std;int main(

2014-08-21 11:11:57 1184

原创 Codeforces Little Dima and Equation 数学题解

B. Little Dima and Equationtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputLittle Dima misbehaved during a

2014-08-21 09:02:26 2546 2

原创 HDU 1031 Design T-Shirt 选前k大

相当于给出一组数列,然后选择前K大的数的算法。本题没有给出详细的数据,故此就使用动态分配空间的方法了。而这种题最好的算法就是使用快排思想,期望时间效率就是O(n)了。最基本入门解决这种题的算法是直接排序了。那就成了水代码了。用上快排的思想才能体现出水平。不过这种快排实在考的太多了,建议一定要掌握。每次做这个算法的题目总会要调试一定时间的,每次都出现奇葩的错误。看来还是不够细心。

2014-08-20 20:58:14 1028

原创 HDU 1030 Delta-wave 数学题解

给出一个数字塔,然后求沿着数字之间的边走,给出两个数字,问其路径最短的长度是多少。看似一条搜索题目,不过有一定做题经验的人都知道,这个不是搜索题,直接搜索肯定超时。这个是根据规律计算的数学题目。我这里的思路是一层一层往下搜,利用层间的规律加速,实现层跃,到了同一层,或者同一个对角列的时候就可以直接计算出结果了。对角列即顺着三角形的边能直接走到目标的列。数学计算出层与层之间相差2,而

2014-08-20 12:58:57 1188

原创 HDU 1027 Ignatius and the Princess II 选择序列题解

直接选择序列的方法解本题,但是最坏时间效率是O(n*n),故此不能达到0MS。使用删除优化,那么就可以达到0MS了。删除优化就是当需要删除数组中的元素为第一个元素的时候,那么就直接移动数组的头指针就可以了,那么时间效率就是O(1)了,而普通的删除那么时间效率是O(n),故此大大优化了程序。如何直接选择第k个序列,可以参考本博客的Leetcode题解。Leetcode题有个一模一样的题目

2014-08-20 08:38:25 1102

原创 HDU 1026 Ignatius and the Princess I 迷宫广搜剪枝问题

本题是个经典的迷宫广搜问题类型了。网上看到好多解法。很多解题报告都没什么分析,更不会指出其中的关键点。代码更加像一大抄。有人分析也一大篇分析,不过全部都不切中关键,甚至在分析什么广搜和深搜区别,广搜为什么快之类的,还有喊什么暴搜之类的,全错了。估计这些代码都是抄过的。通过一大段的时间研究,终于搞通了。本题虽然可以说是广搜,但是其中的关键却是剪枝法,为什么呢?因为迷宫并不能简

2014-08-19 12:06:02 1488

原创 POJ 2386 Lake Counting 搜索题解

简单的深度搜索就可以了,看见有人说什么使用并查集,那简直是大算法小用了。因为可以深搜而不用回溯,故此效率就是O(N*M)了。技巧就是增加一个标志P,每次搜索到池塘,即有W字母,那么就认为搜索到一个池塘了,P值为真。搜索过的池塘不要重复搜索,故此,每次走过的池塘都改成其他字母,如'@',或者'#',随便一个都可以。然后8个方向搜索。#include #include #inc

2014-08-15 23:04:56 1112

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关注的人

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