摘要: View Code 1 /* 2 PROG: prefix 3 ID : ouyangyewei 4 LANG: C++ 5 */ 6 #include <string.h> 7 #include <cstdio> 8 #include <cstdlib> 9 #include <cstring> 10 #include <iostream> 11 #include <memory.h> 12 #include <algorithm> 13 using namespace std; 14 15 struct T 阅读全文
posted @ 2012-08-06 21:05 Maxwell:My Blog 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://www.slyar.com/blog/stdlib-qsort.htmlqsort包含在<stdlib.h>头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。函数原型:void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );用法以及参数说明:Sorts the num elements of the array p 阅读全文
posted @ 2012-07-23 16:25 Maxwell:My Blog 阅读(667) 评论(0) 推荐(0) 编辑
摘要: STL MAP 详解 (zz)原文链接:http://www.cppblog.com/MiYu/archive/2010/08/25/124656.html由于STL是一个统一的整体,map的很多用法都和STL中其它的东 西结合在一起;map中由于它内部有序,由红黑树保证,因此很多函数执行的时间复杂度都是log2N的,如果用map函数可以实现的功能,而STL Algorithm也可以完成该功能,建议用map自带函数,效率高一些……Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字 的值)的数据处理能力,由于这个特性,它 阅读全文
posted @ 2012-07-15 23:46 Maxwell:My Blog 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 之前一直没有认认真真地花时间去思考这个题目。。。。。。。分析:(关键在于如何建立状态)(1)对于任何格子,都需要考虑是走还是飞(2)如果当前格子是@,那么就只能飞根据current和next的格子,有以下:(1)当前是@,则无论下一步是什么,下一步都必须要飞,不飞会掉进陷阱的,耗费1s和1magic(2)当前是“.” 下一格是@,则下一步必须要飞,@不能走,耗费1s和1magic 下一格式“.”,则下一步需要考虑两种情况,第一种是步行,耗费2s和0magic,第二种是飞,耗费1s和1magic状态的建立:考虑到每一格可能是飞,也可能是步行,而飞与步行最终导致该格... 阅读全文
posted @ 2012-07-09 21:12 Maxwell:My Blog 阅读(136) 评论(0) 推荐(0) 编辑
摘要: GameRes游戏开发资源网 http://www.gameres.comAmit's A star Page中译文Amit's A star Page中译文原文链接:http://dev.gameres.com/Program/Abstract/Arithmetic/AmitAStar.mht译序这篇文章很适合A*算法的初学者,可惜网上没找到翻译版的。本着好东西不敢独享的想法,也为了锻炼一下英文,本人译了这篇文章。由于本人英文水平非常有限,六级考了两次加一块不超过370分,因此本译文难免存在问题。不过也算是抛砖引玉,希望看到有更多的游戏开发方面的优秀译作出现,毕竟中文的优秀资 阅读全文
posted @ 2012-05-23 15:42 Maxwell:My Blog 阅读(379) 评论(0) 推荐(0) 编辑
摘要: HDOJ 1540题目大意:给定两个整数N,M, 其中N表示一共有N个村庄,M代表有M次操作,操作有以下:1. D x 销毁村庄x2. Q x 询问与村庄x相邻的村庄总数3. R 最近一次销毁的村庄得到重建问题分析:对于N个村庄,可以建立一颗线段树,维护最大连续区间长度,操作分析:在线段树上找到x节点,并将x节点“销毁”(村庄x被销毁),然后分别更新与x节点(村庄x)相关联的节点值(这里指左右连续区间的长度)对于询问操作,显然这里要求返回的是存在x的最大左右连续区间长度和将村庄x恢复(具体到重置线段的覆盖标志),并更新与村庄x相关联的最大连续区间和具体实现:对于有N个村庄,可以建立区间为[1, 阅读全文
posted @ 2012-05-10 14:40 Maxwell:My Blog 阅读(1087) 评论(0) 推荐(0) 编辑
摘要: 一开始提交后得到了好几个WA,搞得我一直很郁闷,于是重新看了一下题目,发现有一个地方我没有考虑到Note that one message can appear twice or more and if two messages have the same priority, the one comes first will be processed first.(i.e., FIFO for the same priority.)意思是一段信息可以重复出现,并且如果两串信息的优先级相同,则输出先输入的字符串思路:建立一个最小堆,维护字符串的优先级,其中维护操作如下:如果两串字符串的优先级相同 阅读全文
posted @ 2012-05-05 11:48 Maxwell:My Blog 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://www.cnitblog.com/cockerel/archive/2006/09/13/16806.html相信对算法设计或者数据结构有一定了解的人对线段树都不会太陌生。它是能够在log(MaxLen)时间内完成线段的添加、删除、查询等操作。但一般的实现都有点复杂(我自写的是要递归的,比较多行)。而线段树应用中有一种是专门针对点的。(点树?)它的实现却非常简单。 这种数据结构有什么用?我们先来考虑一下下面的需求(全部要求在LogN时间内完成):如何知道一个点在一个点集里的大小“排名”?很简单,开一个点数组,排个序,再二分查找就行了;如何在一个点集内动态增删点?也很简. 阅读全文
posted @ 2012-05-05 10:02 Maxwell:My Blog 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 最近一直在看胡浩的【完全版】线段树,这个题目是在他的blog介绍的文字没有参考别人的成分题目大意:Hotel有N(1 ≤ N ≤ 50,000)间rooms,并且所有的rooms都是连续排列在同一边,groups需要check in 房间,要求房间的编号为连续的r..r+Di-1并且r是最小的;visitors同样可能check out,并且他们每次check out都是编号为Xi ..Xi +Di-1 (1 ≤ Xi ≤ N-Di+1)的房间,题目的输入有两种样式:1 a : groups需要check in a间编号连续的房间2 a b : visitors check out 房间,其中 阅读全文
posted @ 2012-05-05 08:41 Maxwell:My Blog 阅读(6297) 评论(3) 推荐(1) 编辑
摘要: 线段树----成段更新题目唯一需要注意的地方是 延迟标志 的那个地方 1 #include <stdio.h> 2 3 #define lson l, m, rt<<1 4 #define rson m+1, r, rt<<1|1 5 6 const int maxn = 100004; 7 8 char cmd[2]; 9 int n, mNum, a, b, c;10 __int64 sum[maxn<<2]={0}, col[maxn<<2]={0};11 12 void BuildTree(int l, int r, int 阅读全文
posted @ 2012-05-03 15:38 Maxwell:My Blog 阅读(2512) 评论(0) 推荐(0) 编辑