自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(204)
  • 收藏
  • 关注

原创 poj1151&hdu1542Atlantis(线段树+离散化+线扫描 VS 二维线段树)

->>题目戳这里     戳这里也行->_题目大意:二维平面内给n个矩形,求面积并。题目分析:线段树线段树~注意给定的坐标点是浮点数,所以要离散化。这题用线段树2种做法:1。线段树+离散化+线扫描。此法相对简单,对x轴坐标离散化建立一颗线段树,对所以矩形按矩形的相对高度排序,先插相对位置比较低的矩形,这样在y轴方向上可以方便的求出y方向上的并,因为排序后y方向上只要2种情况,后

2013-06-09 20:05:29 1054

原创 hdu1540&poj2892Tunnel Warfare(线段树单点更新)

->题目请戳这 和这->题目大意,给n个点表示n个村庄,一开始都是相连的,现在有3种操作:Q x,查询第与第x个村庄相连的村庄个数;D x,摧毁掉第x个村庄;R  恢复刚摧毁的村庄。题目分析:每个点用2个状态表示,0表示被摧毁,1表示存在,因为有恢复操作,并且每次恢复上一个被摧毁的村庄,所以用一个栈存储所有被摧毁的村庄,每次R操作恢复栈顶村庄。这题关键是查询操作,如果查询的村庄x不存在,则

2013-06-09 13:17:19 949

原创 hdu4417Super Mario(线段树+离线处理)

->题目请戳这里题目大意:一个长为n的路,每个整点处有高度为h的墙,现在超级玛丽要跳过这些墙去救公主。给m个询问,每个询问包含询问区间a-b以及玛丽的弹跳高度c,求对于每个询问,玛丽能跳过这个区间多少墙。题目分析:简单的说就是求给定区间不大于c的墙的个数。对区间处理很容易想到线段树,但是线段树貌似没有查询区间小于某个数的个数的功能,又像划分树,但是划分树求的是区间第k大值。所以我们换一下思

2013-06-08 19:49:29 1324

原创 poj2528Mayor's posters(线段树+离散化+坑坑坑)

->题目请戳这里这题是个巨坑!!

2013-06-08 17:39:50 1448

原创 杭电1800Flying to the Mars(简单哈希)

->题目请戳这里题目大意:给n个数,表示n个人的等级,现在这n个人要去攻占火星,要坐扫把去,能坐在同一个扫把上的人要满足他们的等级严格递减,求最少的扫把数。题目分析:就是求一个数字串的单调递减(递增)的子序列数,也就是求出现次数最多的那个数。给定数字范围是2^30,所以用哈希做。哈希函数定义的是每个数字各位平方和,跑了四百多毫秒,效率不是很高。。。详情请见代码:#include

2013-06-08 12:21:51 1410 4

原创 poj3468A Simple Problem with Integers(线段树成段更新)

->题目请戳这里题目大意:红果果的线段树,给n个数,2种操作,Q a b,查询a到b这个区间和,C a b c,a到b区间每个数加上c。题目分析:线段树维护区间和,要加lazy标记。详情请见代码:#include #include#includeusing namespace std;const int N = 100005;typedef __int64 ll;str

2013-06-08 10:02:32 936

原创 poj1392Ouroboros Snake(欧拉回路)

->题目请戳这里题目大意:这题跟杭电的2894基本是一样的题目分析:具体建图,->请戳这里,这题要求输出的是当每次读n个二进制位的时候,所求出的字典序最小的序列的第k个数的值。只要输出具体的某个值,所以我们把答案存起来,n从1-15只算1次就行了,重复的查表即可。详情请见代码:#include #include#includeusing namespace std;c

2013-06-07 09:55:10 922

原创 杭电2894DeBruijin(欧拉回路)

->题目请戳这里题目大意:一个旋转鼓,上面均匀分成m份,每一份可以表示二进制的0或1,现在求一个最短的01序列,使任意的k个相邻的01序列表示不同的值。并输出字典序最小的一个序列。题目分析:这个序列是循环的,长度为k的二进制数表示的范围是0-2^k - 1,鼓转动一小格,当前k个二进制位与前一个状态相比,只有首尾2个二进制位发生了改变,中间的k-1位是不变的,考虑以这k-1位二进制位为点,

2013-06-07 09:10:32 1193

原创 poj1041John's trip(欧拉回路+输出路径)

->题目请戳这里题目大意:一个小镇有m条街,n个交叉口,每条街上有john的一个朋友,现在john要拜访每个朋友1次,输出字典序最小的访问街道编号。起点是输入第一组数据最小的端点。题目分析:典型的欧拉回路问题。先判断图是连通的并且所有点度数为偶数,因为这题是无向图,建图的时候每条边正反建一次。由于要字典序最小,所以要先dfs编号较小的街道,所以建图的时候稍微注意一下,我是先把所有的街道排序

2013-06-06 19:19:17 983

原创 poj2230Watchcow(简单欧拉回路)

->题目请戳这里题目大意:m条路连n个地方,这m条路是双向的,即从a到b和从b到a是不一样的。现在从1出发,沿每一条路走1遍回到起点1,给出这样的一种走法,依次输出经过的顶点,special judge。题目分析:红果果的欧拉回路问题,对每一对点,建2条有向边,最后dfs得到一条欧拉回路。这题要注意数组大小,M是边的数量,再正反建边,就是2M条边,最后有4M+1个点,所以如果要保存所有的点

2013-06-06 16:52:41 1090

原创 杭电1116Play on Words(欧拉路径(回路)的判断)

->题目请戳这里题目大意:给你一些单词,问是否能完成单词接龙,即一个单词的最后一个字母是另一个单词的首字母,每个单词都必须有,并且只能出现一次。题目分析:每个单词只取首尾字母,从首字母到尾字母建一条有向边,最后建成一张有向图,题目转化成了在这张有向图中能否找到一条欧拉路径或者回路。用并查集维护这张图可以判断图是否连通。来复习一下欧拉图的判断条件:1。对于无向图,每个顶点的度数为偶数

2013-06-06 16:45:43 1076

原创 poj3076Sudoku(我大DLX威武!16*16数独秒解!!)

->题目请戳这里题目大意:16*16数独。题目分析:建模同这篇9*9数独,就不多废话了,详情请见代码:#include #include#include#includeusing namespace std;const int N = 16 * 16 * 16 * 16 * 16 * 4 + 5;//16 * 16 * 16行16 * 16 * 4列int s[N],h[N

2013-06-01 19:21:36 2138

原创 poj3074Sudoku(DLX解9*9数独)

->题目请戳这里题目大意:填9*9数独,就不多废话了。题目分析:以前写数独是用搜索做的,略带暴力枚举,代码量比较大,效率也不高,最近学dancing links,用来解决精确覆盖问题,效率蛮高,而且代码非常优雅。关于数独转化成精确覆盖问题,这篇论文讲的很详细,就不在这里班门弄斧了,详情请见代码:#include #include#include#includeusing nam

2013-06-01 18:52:59 1785

原创 POJ3740Easy Finding(DLX入门)

->题目请戳这里题目大意:给一个m*n的01矩阵,求是否存在若干行,使这些行中的1覆盖所有的列恰好1次。题目分析:裸的精确覆盖题目,建图+模版= AC。需要用到dance links这种数据结构优化。dancing links也是最近才学,今天刚弄明白,这此特别感谢yyd大牛,帮我解决了一个小瓶颈。关于dancing links,仔细研究才能发现dancing lingks是如此绝妙的

2013-05-31 23:12:33 997

原创 poj1190生日蛋糕(dfs+剪枝)

->题目请戳这里题目大意:一个m层的蛋糕,每层蛋糕均为圆柱体,总体积为n*PI,从下往上的层数满足每一层的半径和高度逐层严格递减。蛋糕最小表面积(不算底面)。(其中m、n以及每层的半径和高度均为整数,设最小表面积为s*PI,输出s)。如果不存在解,输出0。题目分析:因为所有数据都是整数,层数不超过20层,每层的半径和高度有是单调递减的,因此可以用dfs遍历所有解,求最小的。用dfs逐层枚举

2013-05-28 22:53:49 959

原创 poj3009Curling 2.0(简单dfs)

->题目请戳这里题目大意:在一个h*w的场地内玩冰壶游戏,0代表空地,1代表障碍,2代表冰壶起始位置,3代表目标位置。现在要把冰壶挪到目标位置,冰壶只能往上下左右4个方向走,冰壶隔壁如果是障碍物,就不能往该方向走。冰壶走了就不会停下来,除非碰到障碍物,碰到障碍物后冰壶停止,障碍物消失(先停止再消失),冰壶当然不能出界。求冰壶能否在10步内(包括10步)到达目的地,如果能,输出最小步数,不能输出

2013-05-27 20:36:33 721

原创 A Knight's Journey(简单dfs)

->题目请戳这里题目大意:给一个p*q的棋盘,马从(1,1)出发,求能否遍历棋盘中所有点,若能,按字典序输出路径。不能输出impossible。题目分析:是道水回溯。但是被字典序给搞郁闷了。p代表行,q代表列,行用数字标识,列用字母标识。按字典序输出的话搜索方向很重要,方向不对搜出的路径就不是字典序了。所以方向在列上面要从-2,-1,1,2。详情请见代码:#include #incl

2013-05-27 18:11:10 803

原创 poj1564Sum It Up(dfs+判重)

->题目请戳这里题目大意:给定一个数字串,求一个和为t的子串。题意跟这道hdu2610Sequence one基本一样,不同的是,这题要把子序列求和。题目分析:还是dfs做,判重是一样的,只要加个求和就可以了。需要注意的一点是,当输入序列之和小于t的时候直接输出NONE,但是和大于t并不一定有解,所以还要标记一下,一开始粗心,贡献了几次WA。。。详情请见代码:#include #in

2013-05-26 22:37:29 894

原创 URAL1779The Great Team

->题目请戳这里题目大意:有n个人要选3个人组队,要求是这3个人中每个人的朋友数都相等,课设根据n个人之间的关系,发现这个队伍组不起来。求n个人可能的k组关系使得组不出一支队伍。k组关系任意一种情况都可以。题目分析:题目有点搞,就是给n个人,求出k组关系,使得任意3个人朋友数不等。建立模型就是给n个点,求一个图使得任意3个点的度不相等。既然要使任意3个点度数不相等,可以使每2个点拥有相同的

2013-05-25 22:15:04 808

原创 URAL1777Anindilyakwa(简单题,做法很多)

->题目请戳这里题目大意:一开始有3堆石子,数量分别为x1,x2,x3,给一个人看,让这个人给出任意2堆石子数量最小差值。这个人不会表达数字,但是他会拿来相同数量的石子代表那个数字,每次拿来的石子成新堆加入前面的石子堆,问多少次后这个人不用再搬石子了。题目分析:如果石子堆中有2堆数目相等,最小差值就是0,就不用搬石子了。考虑到这个差值是单调不增的,每次把前一次的最小差值加入石子堆,所以新的

2013-05-25 21:35:50 813

原创 poj1056IMMEDIATE DECODABILITY(字典树)

->题目请戳这里题目大意:跟这题基本一样题目分析:略,练习一下徒手静态字典树,最后一道了。。详情请见代码:#include #include#include#includeusing namespace std;struct node{ int next[2]; int tag,end;}lcm[1<<16];char s[20];int f

2013-05-17 21:14:23 884 2

原创 poj2503Babelfish(Trie tree 或者map)

->题目还是戳这里题目大意:还是给你一个字典,翻译单词。题目分析:题目蛮简单,字典树练手题。不过STL可以水过。输入有点小刁难,需要小心点,其他的就没什么了。详情请见代码:#include #include#include#include#include#includeusing namespace std;const int N = 1000005;map lc

2013-05-17 20:30:21 859

原创 poj2630Phone List(静态Trie tree)

->题目请戳这里这题跟杭电1671一样,->详情请戳这里于是用1671的代码去提交了一发,结果TLE了。果断写成静态树,效率笋尖就上去了,从TLE到125ms,就是这么快!这个代码拿到杭电上重新提交一遍,效率也高出不少。从400+ms到93ms,果然静态数据结构效率高。这题与1671比还改进了一点,就是去掉了排序,在每个节点处加了一个变量tag,表示某条路径存在,end标记一个单词

2013-05-17 20:20:41 1012

原创 poj2823Sliding Window(单调队列入门)

->题目请戳这里题目大意:给n个数字,求长度为k的数字串中最大最小值。题目分析:用2个单调队列分别维护最大值和最小值。单调队列入门题,废话不多说。详情请见代码:#include #includeusing namespace std;const int N = 1000005;int lcm[N];int mx[N],mn[N];int mxnum,mnnum;int

2013-05-16 23:08:42 805

原创 hdu3415Max Sum of Max-K-sub-sequence(单调队列)

->题目请戳这里题目大意:给n个数,这n个数首尾相连。求一个长度为不超过k的连续子序列最大和。并求出起始和终止位置。题目分析:求某段连续区间和的最大值,单调队列解决。具体做法是:先求出sum[1]到sum[n],我们考虑第i个数,用一个单调队列维护sum[i - k]到sum[i - 1]的最小值,设这个最小值是sum[j],那么sum[i] - sum[j]就是j到i的这个区间的最大连续

2013-05-16 23:03:45 1033

原创 hdu2578Dating with girls(1)(二分查找或者STL map)

一天不A题,赶不上YYD~->题目请戳这里题目大意:给n个正整数,从中任选一个有序对使x + y = k;k给定。题目分析:水题一枚~数据量给的100000,先排个序,再二分即可,复杂度nlogn;详情请见代码:#include #include#include#include#includeusing namespace std;const int N = 1000

2013-05-16 19:36:37 954

原创 poj2001 Shortest Prefixes(Trie tree练手)

->题目请戳这里题目大意:给若干个单词,求能唯一标识出他们的最小前缀。题目分析:建颗字典树,查字典啊~字典树练手题,废话不多说,详情请见代码:#include #include#include#includeusing namespace std;const int N = 21;typedef struct node{ struct node *next[

2013-05-15 14:43:18 803

原创 hdu1075What Are You Talking About(Trie tree)

晚上A一题,睡的香~@Albafica大牛睡觉前再水一发字典树:->题目请戳这里题目大意:有个火星人,写了一段火星文,都看不懂,但是留下了一本字典,要求翻译。能翻译的翻译,不能翻译的直译~题目分析:字典树字典树~详情请见代码:#include #include#include#includeusing namespace std;typedef struct

2013-05-14 23:12:48 928 1

原创 杭电2072 单词数(Trie tree或者STL)

->题目请戳这里题目大意:中文题,不解释。题目分析:字典树水过~详情请见代码:#include #include#include#include#include#include#includeusing namespace std;typedef struct node{ struct node *next[26]; int end;}tree

2013-05-14 22:26:52 869

原创 hdu1671Phone List(Trie tree)

->题目请戳这里题目大意:给一串数字,求判断是某个数字串是另一个数字串的前缀。题目分析:字典树。详情请见代码:#include #include#include#include#includeusing namespace std;typedef struct node{ struct node * next[10]; int tag;}tree;i

2013-05-14 20:48:11 855

原创 hdu1251统计难题(字典树小试牛刀)

->题目猛戳这里题目大意:略题目分析:建棵字典树就ok,详情请见代码:#include #include#include#includeusing namespace std;char s[20];typedef struct node{ struct node *next[26]; int num;}tree;void init(tree *t)

2013-05-14 20:01:20 736

原创 ZOJ3705Applications(浙江省第十届省赛)

->题目请戳这里题目大意:题目比较长,耐心读完发现题意蛮简单。就是某学校要从n个acmer中选m个人去比赛,因为名额有限,所以要给每个acmer评分,取前m个去比赛。一共有4条评分准则:1:该校有一个oj,oj上有2类题目,题号均为4位无重复的数字,对于每个acmer,在oj上过了第一类题目的每道题目加2.5分,第二类题目每道加1.5分,其他的如果题号是质数,每道加1分,如果不符合以上3个

2013-05-12 13:13:50 1097

原创 hdu1568Fibonacci(公式变形)

->题目请戳这里题目大意:中文题,略。题目分析:要求10^9内任意菲波数的高4位,把每个菲波数求出来是不可能的,所以考虑从公式入手。斐波那契数列公式:fn = 1/√5 [ ((1 + √5)/2)^n - ((1 - √5)/2)^n].公式并不复杂,但是如果直接代进去算的话由于n会非常大,所以会TLE,必须对公式处理一下。因为指数n会特别大,所以要对公式降阶处理:公式两边同时以

2013-05-07 19:53:55 761

原创 hdu1044Collect More Jewels(bfs+dfs)

->题目请戳这里题目大意:迷宫问题。在一个h * w的地图上,@代表起始位置,"."代表空地,"题目分析:既然明显是迷宫问题,肯定要搜索。但这题不是简单的要求逃出迷宫就行了,还要求尽可能的带走价值最大的宝物,而宝物的相对位置未知,所以盲目的搜索会产生大量的重复搜索量,所以先bfs求出各宝物以及起点、终点的相对位置,宝物不超过10个,然后再进行dfs遍历所有可能的情况,取最优解即可,这样可以

2013-05-07 13:53:02 850 2

原创 hdu2531Catch him(bfs)

->题目请戳这里题目大意:中文题,很简单,自己看。题目分析:本题也是迷宫搜索类的,不过和一般的迷宫问题不一样的是本题的搜索者有着庞大的身躯,所以一步要占几个格子。不过这对我们的搜索策略并无多大影响,我们只需在移动的时候将搜索者身体所占的地方同时向一个方向移动就可以了。本题要求最少步数,故用bfs。搜索者的身体不超过20格,用结构体保存搜索者的身体信息,从起点开始搜。搜索前先想好判重问题,由

2013-05-05 11:37:16 874

原创 hdu2616Kill the monster(dfs)

->题目戳这里题目大意:有一个怪兽,血量为m,有一个英雄,有n个技能(一次性的),每个技能有2个参数:a和M,a表示此技能能KO怪兽a滴血,M表示当怪兽血量不大于M时,此技能伤害加倍,当m题目分析:因为每个技能有伤害加倍的可能,而且技能的释放次序不定,技能的释放次序对怪兽有很大的影响(某些时刻伤害加倍啊啊),又注意到技能个数n是很少的,多余考虑用dfs遍历所有情况,取最优解。所以此题就比较

2013-05-05 10:01:10 938

原创 hdu2611Sequence two(dfs)

->题目单击这题目大意:跟2610基本一样,就不多说了,唯一的区别是输出部分,2610输出要求按子串中数字出现的位置靠前的先输出,本题则要求按子串的逻辑顺序输出,即先输出短的,长度相同的子串按第一个不相同的数的大小升序输出。2610按出现的位置输出,直接在原串上搜索就可以了,先搜到的一定是位置靠前的。但本题要求从小到大输出,所以很容易想到要对原数组排序,在排好序的数组里面搜,结果就一定满足输出

2013-05-05 09:52:45 928

原创 hdu2610Sequence one(dfs + 剪枝)

题目单击此处题目大意:给一个长度为n的数字串,求该串前p个不递减字串,如果不足p个,则输出所有的不递减子串。题目分析:因为要求输出所有不递减的子串,所以考虑用dfs遍历所有的子串,将符合要求的输出。这题的难点之一是判重。因为数字串中可能出现重复的数字,因此在输出之前要判断此子串之前是否已经存在了。将所有的子串都先存起来是不现实的,因此要在输出子串前先判重。判重要注意2点:如果当前数字是子串

2013-05-04 19:06:45 1050

原创 HDU4192Guess the Numbers逆波兰表示法+全排列

题目在这里》题意:给你一个中序表达式,由(、)、+、-、*以及a-z的小写字母组成,其中有n个不同的小写字母表示n个未知数,再给n个数分别表示这n个未知数的值,再给一个数m,求判断是否能够将这n个数分别赋值给这n个未知数代入表达式所算出的值恰为m。思路:由于题目给的是中序表达式,不方便计算,所以要先将中序表达式转化为逆波兰式。先来复习一下将一个中序表达式转化为逆波兰式的算法:1:准

2013-05-01 21:39:02 1127

原创 poj3737UmBasketella三分法求极值

题目地址题目大意:给定一个圆锥体的表面积s,求这个圆锥体的最大体积以及圆锥体体积最大时的底面半径和高。题目分析:题意十分简单明了。根据圆锥体表面积公式:π * r * r + π * r * l = s(r是底面半径,l是母线长),l = sqrt(h* h + r * r),带入表面积方程可得圆锥高h = sqrt((s/π/r - r)^2 - r * r),根据此式可得一不等式:s/

2013-04-07 22:01:45 1084

空空如也

空空如也

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

TA关注的人

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