自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (1)
  • 收藏
  • 关注

原创 游戏中的碰撞(二)

在上一篇中我们了解了游戏中矩形与矩形,圆形与原型的碰撞,而在本篇中,我们则来研究点与矩形,点与圆形的碰撞,点与点。本节在游戏中的应用主要是在于判断点击按钮,判断子弹相撞等等方面的应用。    (一)点与矩形的碰撞        如图片中的点与矩形,我们可以看出点与矩形的3种位置关系。点在矩形内,点在矩形上,点在矩形外。在游戏中的应用一般用来判断点是否在矩形内。

2017-04-04 20:00:13 526

原创 Poj 2386 Lake Counting

这道题的大意是让你计算水池的数量,实际上是一个简单的搜索题目,运用深度优先搜索算法即可解决。对于题目给的这个水池:W........WW..WWW.....WWW....WW...WW..........WW..........W....W......W...W.W.....WW.W.W.W.....W..W.W......W.(1)我们先循环遍历大地图,当搜索

2017-03-29 11:21:53 312

原创 游戏中的碰撞(一)

对于一个游戏对象来说,有他自己的精灵和碰撞盒,一般来说,碰撞盒有矩形,圆形和精确型,当然你也可以任性的把一个碰撞盒做成不规则的。那么根据这些碰撞盒,就产生了多种碰撞方式,例如:矩形与矩形,矩形与圆形,矩形与精确型,矩形与不规则型的,圆形精确型的......碰撞方式是如此之多,但是,因为效率和代码复杂度的问题,我们一般选用矩形与矩形的碰撞,矩形与圆形的碰撞,圆形与圆形的碰撞.所以,本篇只

2016-10-28 11:44:17 1171

原创 poj 2406 Power Strings

kmp的应用,找出一个字符串的循环节出现的次数。以下内容转载于:http://bbezxcy.iteye.com/blog/1377787在这里我们假设这个字符串的长度是len,那么如果len可以被len-next[len]整除的话,我们就可以说len-next[len]就是那个最短子串的长度    为什么呢? 假设我们有一个字符串ababab,那么next[6]=4对

2016-05-28 11:19:56 274

原创 poj 2823 Sliding Window

单调队列的应用。#include #include #include using namespace std;#define max_n 1000005#define inf 0x3f3f3f3fdeque m_min,m_max;int data[max_n];int n,k;void getmax();void getmin();int main(){ scan

2016-05-28 10:00:36 236

原创 poj 2752 Seek the Name, Seek the Fame

题意是判断一字符串中前缀和后缀一样的位置,例如:abcabc中,前缀abc有一样的后缀abc,abcabc本身也是一个前缀,同时也是后缀这就与next数组的意义联系起来了。假设next[len] = k,也即:s[1,k] = s[len-k+1,len]此时s[1,k]是前缀后缀。处理完next[len]后跳转到next[k+1],用这种方法可以得到所有的前缀后缀。

2016-05-27 20:28:32 207

原创 nyoj290 动物统计加强版

动物统计加强版时间限制:3000 ms  |  内存限制:150000 KB难度:4描述在美丽大兴安岭原始森林中存在数量繁多的物种,在勘察员带来的各种动物资料中有未统计数量的原始动物的名单。科学家想判断这片森林中哪种动物的数量最多,但是由于数据太过庞大,科学家终于忍受不了,想请聪明如你的ACMer来帮忙。输入第一行输入动物名字的数量N(1输出输出

2016-05-25 19:54:00 240

原创 poj 1195 Mobile phones

这道题的题意是先给一个数字i,假如i==0,就对将数组array初始化为0,i==1,随后给出x,y,data,然后使array[x][y] += data,i==3,随后给出x1,y1,x2,y2,则输出sum(array[x1][y1]...array[x2][y2])这一道题需要用到二维树状数组来做.#include #include using namespace std;

2016-05-23 21:14:10 203

原创 二维树状数组

二维树状数组真难理解,推荐一篇博客,多少还是有帮助的。彻底弄懂二维树状数组 - Pilgrim - 博客频道 - CSDN.NET http://blog.csdn.net/u011026968/article/details/38532117不得不说,树状数组真是难理解,代码虽然容易,就是真难理解。

2016-05-23 20:27:50 393

原创 poj 1088 滑雪

滑雪Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 89306 Accepted: 33538DescriptionMichael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等

2016-05-22 21:13:49 181

原创 nyoj 117 求逆序数

求逆序数时间限制:2000 ms  |  内存限制:65535 KB难度:5描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。现在,给你一个N个元素的序列,请你判断出它的逆序数是多少。比如 1 3 2 的逆序数就是1。输入第一行输入一个整数T表示测试数据的组

2016-05-22 17:32:34 182

原创 最长公共子序列

用动态规划解决最长公共子序列问题,推荐一篇博客。三、动态规划算法解最长公共子序列LCS问题(2011.12.13重写) - 结构之法 算法之道 - 博客频道 - CSDN.NET http://blog.csdn.net/v_JULY_v/article/details/6110269这一篇博客讲解的还是很详细的。

2016-05-22 11:07:44 237

原创 poj 2492 A Bug's Life

并查集的高级应用.#include using namespace std;#define max_n 2300int father[max_n];int relation[max_n];int n,m;void init(){ for(int i=1;i<=n;i++) { father[i] = i; relation[i] = 0; }}int find(

2016-05-21 19:56:58 243

原创 poj 1330 Nearest Common Ancestors

一道典型的lca问题,这一道用tarjan算法即可解决。详情参照了这篇博客:LCA问题的Tarjan算法 » NoAlGo博客 http://noalgo.info/476.html#include #include #include #include using namespace std;#define max_n 10007vector tree[max_n];/

2016-05-20 20:43:34 200

原创 nyoj 528 找球号(三)

找球号(三)时间限制:2000 ms  |  内存限制:3000 KB难度:2描述xiaod现在正在某个球场负责网球的管理工作。为了方便管理,他把每个球都编了号,且每个编号的球的总个数都是偶数。有一天,xiaod发现少了一个球,你能帮他找出丢的那个球的球号吗?输入有多组测试数据。每组数据包括两行。第一行是一个整数N(0随后的一行是N个数,

2016-05-19 20:53:50 299

原创 nyoj 138 找球号(二)

找球号(二)时间限制:1000 ms  |  内存限制:65535 KB难度:5描述在某一国度里流行着一种游戏。游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,还有一个空箱子,现在有两种动作:一种是"ADD",表示向空箱子里放m(0<m<=100)个球,另一种是"QUERY”,表示说出M(0<M<=100)个随机整

2016-05-19 20:22:07 385

原创 nyoj 1085 数单词

数单词时间限制:2000 ms  |  内存限制:120000 KB难度:4描述为了能够顺利通过英语四六级考试,现在大家每天早上都会早起读英语。LYH本来以为自己在6月份的考试中可以通过六级,可是没想到,成绩出来以后,居然没有通过。所以他不得不付出更多的时间来学习英语。要想通过六级,最基本的要求就是词汇量。为了能够更快的记住一些陌生单词,LYH有时会找一

2016-05-18 20:11:28 458

原创 poj 3264 Balanced Lineup

这一道题是说给出一串牛的高度,然后给出一段区间,求此区间中最高的牛和最低的牛的高度差。用rmq或线段树就能做出来.#include #include #include #include using namespace std;#define max_n 100010int f[max_n];int max_f[max_n][20];int min_f[max_n][20];

2016-05-17 16:39:29 214

原创 poj 3368 Frequent values

这一道题的题意是说给出一段序列,然后任给一段区间,求此区间出现最多的数字的数目。比如:给一段序列: 10 3 12 12 8 8 8 8 8 7 11 11然后,所给区间为:2,4 则出现最多的数字的数目为23,10 则出现最多的数字的数目为5此题需要对原数列进行处理,如果f[i] == f[i-1],那么,f[i] == f[i-1] + 1;若f[i]!=f[i-1

2016-05-17 16:10:07 214

原创 poj 1703 Find them, Catch them

我参照了下边这篇博客:http://www.voidcn.com/blog/u011008379/article/p-5747778.html这道题就需要虚点的存在。比如:输入D 1 2那么就为2创造一个虚点2',让2‘和1同在一个集合。为1创造一个虚点1’和2同在一个集合。判断a和b的时候,若a,b同在一个集合,那么a,b在同一个帮派。若a和b‘在一个集合,则a,b在不同

2016-05-11 17:13:45 256

原创 kmp算法

推荐一篇博客,kmp讲的很详细,讲的很不错http://blog.csdn.net/v_july_v/article/details/7041827

2016-05-09 20:08:48 256

原创 nyoj 123 士兵杀敌(四)

描述南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的事情,军师小工的任务就是在南将军询问他某个人的军功的时候,快速的报出此人的军功,请你编写一个程序来帮助小工吧。假设起始时所

2016-05-09 20:06:07 783

原创 nyoj 119 士兵杀敌(三)

描述南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进行比较,计算出两个人的杀敌数差值,用这种方法一方面能鼓舞杀敌数高的人,另一方面也算是批评杀敌数低的人,起到了很好的效果。所以,南将军经常问军师小工第i号士兵到第j号士兵中,杀敌数最高的人与杀敌数最低的人之间军功差值是多少。现在,请你写一个程序,帮小工回答南将军每次的询问

2016-05-07 09:27:12 380

原创 nyoj 130 相同的雪花

存储雪花时可以把雪花的长度和一并存储起来,然后根据雪花的长度和做一个hash表。判断2个雪花是否相同,就需要从雪花a和雪花b中找到雪花臂长度相同的2个位置。然后从这2个位置开始正序,逆序比较看是否能得到相同的序列。如果得不到,就从下一次长度相同的2个位置开始正序,倒序比较。#include #include using namespace std;#define max_n 1000

2016-05-04 20:58:02 337

原创 nyoj 1185 最大最小值

最大最小值时间限制:1000 ms  |  内存限制:65535 KB难度:2描述给出N个整数,执行M次询问。对于每次询问,首先输入三个整数C、L、R:    如果C等于1,输出第L个数到第R个数之间的最小值;    如果C等于2,输出第L个数到第R个数之间的最大值;    如果C等于3,输出第L个数到第R个数之间的最小值与最大值的和

2016-05-03 16:39:36 396

原创 nyoj 2100 Graveyard Design

该题题意是国王要建一个墓地,给出一个面积,看看哪几个连续数字做正方形的边,面积加在一起刚好和给出的数字相等。也就是给出一个数字,找出n段连续的数字,使这n段数字的平方和等于给出的数字。用尺取法很容易就能做出来。#include #include using namespace std;struct result { long long count; long long lef

2016-04-19 09:45:37 233

原创 nyoj 116 士兵杀敌(二)

士兵杀敌(二)时间限制:1000 ms  |  内存限制:65535 KB难度:5描述南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考虑到新增的杀敌数。

2016-04-16 10:11:20 255

原创 poj 1007 DNA Sorting

中文翻译在这里:http://blog.sina.com.cn/s/blog_61eccf0e0100epql.html为了理解这道题目,花了相当大的功夫。其实这道题很简单,只是题意理解起来难度不低。对于"ZWQM"这个字符串来说,逆序列为:ZW,ZQ,ZM,WQ,WM,QM;逆序数为6所以对于本题的字符串来说:,遍历每一位,在当前位上往后看,有一个小于该位置字母的,就要对这个字符

2016-04-14 21:44:53 248

原创 nyoj 5 Binary String Matching

这道题的意思是给2个字符串a和b,计算a在b中出现的次数。比如:11111101111011111就在字符串中出现了3次,在b中出现的3次的下标分别为0,1,2;4,5,6;5,6,7;用常规的字符串匹配算法就能解决。#include #include using namespace std;int cut_string(string a,string b);int

2016-04-11 21:16:50 214

原创 poj 1936 All in All

一道简单的字符串匹配问题,询问s1是否是s2的子串。#include #include using namespace std;void solve(string s1,string s2);int main(){ string s1, s2; while (cin >> s1 >> s2) { solve(s1,s2); } //system("pause");}

2016-04-09 20:02:57 193

原创 poj 3320 Jessica's Reading Problem

这道题的题意是求能够把全部知识点都覆盖的最小页数,就比如:1 2 2 2 1只需要读前两页就能读完所有知识点,因此答案即为2.那么对于这道题的做法来说,需要选择hash表跟尺取法。我们以以下数列为例:12 13 15 17 13 12 15 12 17 15每一次先寻找到一个能够覆盖所有知识点的区间[s,t](t接着在寻找一个能够覆盖所有知识点的区间[s+1,t'](t

2016-04-09 16:09:06 187

原创 poj1753 flip game

中文翻译在这里,http://blog.sina.com.cn/s/blog_61eccf0e0100g1gs.html这道题目是一个翻牌问题,对于同一格,翻1次,格子会变得和原来相反,再翻一次,那么格子就会变回原来的内容,在翻一次,格子又会变得相反。因此,我们可以知道,翻牌翻奇数次的效果跟翻一次是一样的,翻偶数次是不会改变棋盘内容的。因此对于一个4*4的棋盘来说,最多只能翻16次。

2016-04-09 09:07:38 258

原创 HDU 1272 小希的迷宫

Description上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路)。小希现在把她

2016-04-06 13:01:06 187

原创 poj 2251 Dungeon Master

这道是个用个简单的宽搜或者深搜就能做出来,只需要注意有上,下,左,上一层,下一层,后共计6个方向。难点在于读懂题意,地牢分为了n层,注意到这一点就简单了。#include #include using namespace std;const int MAXSIZE = 300;struct coord { int x, y, z; int step; bool opera

2016-04-05 11:28:39 269 1

原创 poj 2485 Highways

一道最小生成树的水题,很简单就能做出来。题意就是找出来最小生成树中的最大边,需要注意的是对边进行排序的时候注意不要排反了。#include #include #include using namespace std;#define N 1000int bing[N];struct coord{int x, y;int quan;};bool cmp(

2016-04-05 11:22:10 196

原创 nyoj 284 坦克大战

描述 Many of us had played the game "Battle city" in our childhood, and some people (like me) even often play it on computer now.What we are discussing is a simple edition of this game. Given a ma

2016-03-30 21:40:31 297

原创 HDU 1213 How Many Tables

一道水题,运用并查集,每2个人认识,就放到一个集合里。最后统计集合的个数。#include #include using namespace std;int cdata[10000];int k_find(int i){ if (cdata[i] == i)  return i; else  return cdata[i] = k_find(cdata[i]

2016-03-29 21:31:23 176

原创 POJ 2236

这道题用到了并查集,给出了n台电脑的坐标。如果想让2台电脑相互通信,需要这2台电脑的距离小于一定的数值,或者可以通过第三台电脑间接通信,甚至通过n台电脑间接通信。因此,只要2台电脑的距离满足,就把2台电脑加入到同一个集合内。最后给出2台电脑,判断这2台电脑之间是否可以相互通信。#include #include using namespace std;int set[1010];

2016-03-29 17:32:49 258

原创 nyoj 55

懒省事的小明时间限制:3000 ms  |  内存限制:65535 KB难度:3描述       小明很想吃果子,正好果园果子熟了。在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。小明决定把所有的果子合成一堆。 因为小明比较懒,为了省力气,小明开始想点子了:  每一次合并,小明可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,

2016-03-28 09:00:20 228

原创 poj 2387 Til the Cows Come Home

这是一个最短路径问题,求Bessie最少的开销。需要注意的是,本题是个无向图,并非有向图,存储时得注意到这个问题。用Bellman-Ford算法即可解决问题。#include using namespace std;struct point { int begin; int end; int length;}s[5000];int n, t;int an[5

2016-03-27 17:03:03 163

C++控制台贪吃蛇小游戏

一个用C++写的控制台贪吃蛇小游戏,可以在游戏的开始生成随机的地图,有计分功能,基本实现了贪吃蛇应有的功能,只是还有一些bug。注意用VS2015来打开该文件。

2016-07-11

空空如也

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

TA关注的人

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