- 博客(8)
- 收藏
- 关注
原创 POJ 3617 字典序最小问题
从字典序的性质来看,无论一个字符串末端有多大,只要前面的部分较小即可,所以可以用以下的贪心性质: 不断取字符串S的开头和末尾中较小的一个字符放到新的字符串T的末端。 既然是比较字符大小,那么就不能忽略字符相等的情况。首先把字符串S反转得到字符串S’,按字典序比较S和S’,然后按以下三种情况处理: 1.S较小,从S的开头取出一个字符,加到T的末端 2.S’较小,从S’的开头取出一个字符,加到T
2015-09-05 10:50:33
390
原创 HDU 1429 胜利大逃亡(续)
做了一些关于BFS的题目,每个题目的描述不一样,但是特点都是移动时状态的改变。这道题主要就是找到最短路径上的锁的钥匙,解锁并出逃。当前是否拥有特定锁的钥匙的状态可以用二进制压缩的方法记录。初次接触状态压缩,对它的原理还有待进一步的了解,现在只是模仿大神的方法试敲。ps:这道题之前一直CE,原因是命名空间中的next关键字和我自己定义的变量冲突,浪费了不少时间,下次切记避免这种问题。 http://
2015-08-20 14:29:08
330
原创 简单的贪心算法 HDU 2037 今年暑假不AC
简单回顾了一下贪心算法,它是一种高效的算法,因为它按照某种贪心策略,不断选取的是当前的最优解。跟搜索算法还有动态规划的全局最优不一样。只考虑当前最优当然简单得多啦,但是并不是每道题都适合用贪心算法解决,它要符合以下两个性质: 1.整体的最优解可以通过局部的最优解来求出; 2.一个整体能够被分为多个局部,并且这些局部都能够求出最优解。 Orz,看看一道简单的贪心算法题吧,属于活动安排类。http
2015-08-20 09:13:34
417
原创 HDU 1026 Ignatius and the Princess I
HDU 1026 Ignatius and the Princess I依然是BFS的题目,这次不同的是需要把路径进行记录。计算最短路径的值跟裸题一样,就不重复了,主要的不同是用pre数组把每个点的前一个元素记录下来,最后用迭代的方式把路径输出。#include<cstdio>#include<queue>#include<cstring>#define INF 10000000using
2015-08-15 18:05:28
286
原创 HDU1253 胜利大逃亡 BFS
HDU1253 胜利大逃亡题意: 在一个三维的房间里找到距离出口的最短路径,比较最短路径花的时间和魔王回来的时间 T,若小于等于T,则出逃成功。起点坐标为(0,0,0),终点坐标为(a-1, b-1, c-1),地图中0为通路,1为墙。思路: 典型的BFS,记录的数组从常见的二维扩充到了三维。依然使用队列维护,把初始状态加入队列,修改dis[][][]数组的值,取出队首元素,让元
2015-08-08 13:53:58
346
原创 HDU 1312 BFS裸题
今天刚学习了广度优先搜索bfs,利用队列来维护。 首先讲初始状态加入队列,此后不断取出队首元素,判断是否满足搜索结束条件(到达终点等),若不满足,在给定的4个或8个方向进行搜索,并且要注意越界、是否已经访问、是否允许访问等约束条件,若满足,则将该点加入队列,并且改变标记距离的数组的值。当队列为空或到达终点时搜索结束。includeincludedefine MAX 20define INF 10
2015-08-08 11:15:42
453
原创 初学MFC(一)
小学期的项目要用到MFC,然而只能自学啦,找到一个自学网站挺好的,开始了第一天的自学~http://v.dxsbb.com/jisuanji/555/#Introduce知道了一个叫MSDN 的帮助系统,很好用的赶脚 首先要对C++的窗口程序有一个大致的了解,一开始总是知识点比较多的,只能默默地记着了1.MSG类 typedef struct tagMSG
2015-07-13 17:17:26
287
原创 大数求和
#include#include#define MAX 1000int main(){ char str1[MAX],str2[MAX]; int str3[MAX+1]; int len1,len2,i,j,k,m,num,count = 1; scanf("%d",&num); while(num--){ scanf("%s %s",str1,str2);
2013-12-30 17:08:35
284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人