自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

丿聪丶

每发一篇文章,就意味着我向成功更近了一步!

  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 poj 1471 dfs 搜索三角形

题意:在字符是'-'的区域中,找出最大的三角形。思路:枚举'-'的地方作为三角形的顶,搜索三角形。注意,跟原图对比,判断三角形是正的还是倒的。。。#includeusing namespace std;int sum , len;char map[220][500];int dfs(int y,int x) { int st = y; int ed = y; int h =

2012-03-27 21:02:50 650

原创 poj 1088 滑雪[zz] 记忆化搜索

题意:给出一些高度,从一个位置划只能往周围四个方向滑,且高度递减。。求最长的滑行区域。  这道题应该是用DP做,但是没咋搞过DP所以也木有什么想法。。在网上看可以用记忆化搜索做,记忆化搜索 = 搜索方式 + DP思想  ,大概的意思就是把已经搜过的节点状态保存起来,避免重复搜索的一种方法,有待理解加以应用。代码中的step数组  就是  记录了从该点划的最长区域,当再搜到这个点的时候,就不

2012-03-27 20:39:54 444

原创 poj 3300 前后轮

认真读题,按照他的意思搞出来就行。。。英语啊。。。重要~#include#includeusing namespace std;double cmp(double a,double b) { if (a < b) return 1.0; return 0.0; }int main() { double f[100],r[100]; double

2012-03-19 10:20:28 469

原创 poj 2612 扫雷 模拟

题意:开始输出雷的分布,然后输出操作,X代表点在这个区域上,分为两种情况,如果没有踩到雷,那么输出这个地方周围雷的个数,没有操作的点输出“.”,踩到雷的话,把所有雷的地方输出“*”,然后操作的地方输出周围雷的个数。挺容易的,但是WA了 半天。。。后来还是看了依然的报告,写的很简洁~ o(︶︿︶)o 唉。。差距#includeusing namespace std;int dir[8][

2012-03-19 10:14:04 756

原创 poj 2487 排序题

题意:也是个排序题,降序排序后,从头往后加,满足条件跳出就行。#include#includeint cmp(int a,int b) { if (a>b) return 1; return 0; }using namespace std;int a[1000010];int main() { int T; scanf("%d",&T);

2012-03-19 10:10:03 604

原创 poj 2371 questiong and answer

题意:就是一个排序,然后询问第几大的数,输出。。无聊#include#includeusing namespace std;int main() { int N , K; int a[100100]; char s[10]; while (scanf("%d",&N)!=EOF) { for (int i = 0 ; i < N ; i +

2012-03-19 10:06:31 541

原创 poj 2366 直接寻址法

题意:有两个集合A , B 从A B 两个集合中各找出一个数字,看其和等不等于 10000.思路:直接寻址法  自己枚举超时啊。。。  就是把第一个集合的位置确定,然后枚举第二个集合的数,每枚举一个数就能确定这个数字是不是满足条件,这样一个数字就不需要重复枚举多次。。。原文地址 在依然博客里 POJ 基础题里。 依然的博客在我主页上有链接。#includeusing namespac

2012-03-19 09:58:26 500

原创 poj 2363 blocks

题意:给出边长为1的立方体的体积,对其进行包装,求出组合出最小的表面积。思路:原来在heu做过,三重循环肯定超时,两重循环也有个优化,表面积 = 2*(a*b+a*c*b*c);  当a b c 最接近的时候(a=b=c),也就是立方体的时候是最小的表面积,所以对两个边循环的时候,可以先把V开三次方并向上取整,然后向两边枚举边长。#include#includeusing namesp

2012-03-19 09:54:01 417

原创 poj Recaman's Sequence 打表

题意:根据a[i-1] - i 大于0 并且没出现过,或者a[i-1] - i 小于0 求出序列思路:打表 +  hash 标记状态#includeusing namespace std;int a[500010];bool hash[50001000];//hash得开大点 不然RE int main() { a[0] = 0; memset(hash,0,siz

2012-03-18 08:58:14 371

原创 poj 3750 小孩儿报数问题

题意:很清晰的约瑟夫,自己写了半天的循环链表一直WA,案例可以过,可能是没有处理好特殊情况,改了半天也是WA,无奈只有搜解题。。。因为是昨天弄的,解题报告的地址找不到了,要是在百度搜,应该也可以找到。狠狠鄙视,鄙视自己的链表!我看他这种方法非常好,有种打表的感觉,不忍独享,还是贴出来了。#includeusing namespace std;struct node { char

2012-03-18 08:50:43 674

原创 poj 1068 括号匹配

题意:p序列代表当前右括号的坐标有多少左括号,w序列代表了当前右括号和它匹配的左括号之间有多少个右括号(包括当前右括号)思路:找到右括号的位置,模拟匹配过程。#includeusing namespace std;int main() { int p[30],w[30],s[60];//s是括号序列 0代表"(" 1代表")" bool flag[60];

2012-03-18 08:35:05 675

原创 poj 2528 贴海报

题意:有一面墙,然后在上面贴海报,最后看一共能看到几张海报。思路:本来以为是简单的线段树,但是搞了许久未果。。。  然后上网看了看,才知道这是离散化+hash+线段树因为题给的,长度的范围比较大,但是给出的海报张数却不是很多。。。离散化我也是第一次看,我感觉就是把一些数换一种映射方式,但是数据之间的关系(比如:大小)是不变的。这道题就是把海报的范围,进行排序,去重,映射成了X数组的

2012-03-16 22:59:15 472

原创 poj 2828 插队买票

题意:输入人占的位置,和这个人对应的value,最后输出队伍的排列情况。思路:第一感觉像链表。。。但是我是找的线段树的题啊,而且数据量非常大,还是乖乖的想线段树吧,估计链表我也敲不出来。想了很久,哎,无奈还得找解题报告。这题是倒过来想的,最后一个插入队伍的人位置一定是确定的,这点容易想,但是他上一个插队的人的位置怎么确定呢,这就用到了线段树,线段树存储了这段区间内还有多少个"可以插的空",然后

2012-03-16 22:43:51 491

原创 hdu 1698 线段树 成段更新

题意:输出T是case数,然后输入N,代表1~N 默认的value是1,然后输入区间[a,b] 和 value c ,把 a~b 的价值更新为c ,最后输出1~N的价值即可思路:线段树 成段更新 最后输出线段树的sum[1]就行。#includeusing namespace std;#define lson l , m , rt << 1#define rson m + 1 , r

2012-03-16 22:22:51 417

原创 万年历

输入 2011.1  以后的 年月 输出 该月对应的日历#includeusing namespace std;int mon[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};int check_y(int year) { if (year%400==0

2012-03-16 21:59:56 433

原创 hdu 2795 线段树(贴广告)

题意:给出h , w , n 在h*w的地方贴n张1*wi的广告,广告尽量网上贴,其次尽量往左贴。可以贴的话输出行号。思路:建立min(h,n)长度的线段树,可以这样想,如果h>n 那么需要贴n次,最坏的情况也就是每一次占一行,需要n个叶子节点;如果h#includeusing namespace std;#define lson l , m , rt << 1#define rso

2012-03-12 12:44:50 339

原创 hdu 1394 线段树 求逆序数

题意:一个排列a1 a2 ... an ,把a1 放到最后会形成  a2 a3 ... an a1,  接着把 a2 放到最后会形成  a3 a4 ... an a1 a2 ,依次类推,会有n - 1种变换。求这些变换中最小的逆序数。当前元素的逆序数就是看当前的元素前面有多少个比它大的元素,把这个排列所有元素的逆序数加和,就是这个排列的逆序数。 思路:先初始化线段树,因为区间是0--n -

2012-03-12 09:45:44 453

原创 hdu 1754 线段树 求区间内最值

直接上代码!#include#includeusing namespace std;#define lson l , m , rt << 1#define rson m + 1, r , rt << 1 | 1const int maxn=200005;int MAX[maxn<<2];void PushUP(int rt) { MAX[rt] = max(MAX

2012-03-12 09:17:57 412

原创 hdu 1166 临兵布阵 线段树[hh]

题意:很清晰。。。不解释。昨天学习了下hh的线段树,学完了顿时石化,产生了对我的代码风格无比的鄙视。。 看了hh的线段树,不仅感觉到这个模版灰常的实用美观,而且我也刻意的改变了下我的代码书写的习惯,多加些tab和空格之类的东西,会使你的代码异常美观!!#includeusing namespace std;#define lson l , m , rt << 1#define rso

2012-03-12 09:15:28 980

原创 poj 3468 线段树 区间内的线段和(成段更新)

题意:基本从题目可以知道了吧~思路:直接线段树搞TLE,后来看了这个报告http://hi.baidu.com/lewutian/blog/item/95421b828f63f19df603a6a2.html知道了,在插入线段的时候不需要一直插到叶子节点,而是用一个“score”来标记某一段区间内的增值。 比如要在 【3 6】 区间插个 3  在找到【 4  5 】 区间的时候就可

2012-03-10 22:22:45 498

原创 poj 2060 二分图 最小路径覆盖 出租车

题意:描述一些出租车的任务,问最少用多少个出租车可以完成所有。思路:最多用的出租车的个数是任务个数,如果一个出租车可以一次完成两个任务那么任务个数减一,这也就是二分图的最小路径覆盖问题。。关键还是在建图上,开始建图错误。。。一直WA 后来看的报告,明白了。。。还是理解题意有问题啊。。。#include#includeusing namespace std;struct node{

2012-03-08 22:35:15 685

原创 poj 3264 RMQ 线段树模版题

题意:输入N,Q,然后输入N个数,询问N次,每次输入询问区间,输出区间内最大值和最小值之差。思路:线段树 暴力搞TLE。。。参考地址:http://hi.baidu.com/z917912363/blog/item/d3ad56d571effe2c9a502740.html#includeusing namespace std;struct node{ int lv,rv

2012-03-07 22:56:14 450

原创 poj 3020 二分图(奇偶图) 最小路径覆盖

题意:用1*2的圈圈,把图中的'*'都圈上,圈圈之间可以重复。求最小的圈圈数思路:也是奇偶图的一个变形吧,用的二分图最小路径覆盖最小路径覆盖,最多需要的圈是"*"的个数,*ooo 输出的是1然后以奇偶图这种方式建图(网上叫黑白染色吧)每形成一个匹配,那么需要的圈的个数-1...这也就是最小路径覆盖的意义 单独一个"*"代表一个路径#include#defi

2012-03-07 22:49:36 493

原创 poj 2446 二分图最大匹配(奇偶图)网上貌似叫(黑白染色图)

题意:要求用1*2方块完全覆盖除了坑以外的地方,求1*2方块的个数。思路:如果一个方块的i+j的和 是奇数那么它周围的四个方块,每一个i'+j'的和是偶数;反之相反。所以先把图中所以方块按照,奇数偶数的状态分成两个集合,然后把没有坑的地方的i+j的和是奇数的地方找出来,与周围四个方块(i+j和是偶数)进行建立二分图的边。所以最后求出最大匹配也就求出了1*2方块的总数,最后判断这些方块加上坑的个

2012-03-07 22:43:51 1171

原创 poj 3692 二分图最大独立集 Kindergarten

题意:给出一些同学彼此了解,然后求要选出一些同学,两两之间都了解的最大数量。思路:其实也是个最大独立集问题,就是不了解才建边,求出的最大独立集也就是任意两两之间都是了解的。#includeusing namespace std;bool g[205][205];bool vis[205];int G,B;int link[205];bool dfs(int u)

2012-03-05 13:20:05 346

原创 poj 2771 二分图最大独立集 学生出游

题意:为了防止一些学生之间出现couple,老师出游要带的学生要求两两之间满足一些关系中的至少一条才可以带走。求可以带的最多的学生数量。思路:两个学生之间如果不满足其中的任何一条关系,那么就建边,最后求二分图的最大独立集,也就求出了二分图中的最多的两两之间没有关系的学生(实际是至少满足一条要求的)#include#includeusing namespace std;struc

2012-03-05 13:15:45 544

原创 poj 3041 二分图最小顶点覆盖 小行星删行或列

题意:给出图上小行星的位置,每次炸一个地方,就会删去该点所在的行或者列,求最少的炸弹数。思路:就是二分图的最小顶点覆盖,小行星的位置进行建图,i--j   炸掉i 就相当于删去与i相连所以边 也就是炸掉了i行//首先熟悉一下一个著名的名词“二分图的最小点覆盖数”:假如选了一个点就相当于覆盖了以它为端点的所有的边,要覆盖所有的边至少需要几个点? #includeusing name

2012-03-03 22:42:50 1367

原创 poj 1486 二分图最大匹配必须边

题意:就是求点和矩形的最大匹配。如果有这种唯一的对应关系则输出,没有的话输出none思路:点和矩阵建立连接,然后求最大匹配。同时注意删边的技巧。#include#includeusing namespace std;struct point{ int x,y;}P[100];struct rec{ int minx; int miny; int maxx;

2012-03-03 22:26:52 677

原创 poj 1325 二分图最小顶点覆盖(机器重启)

题意:输入A、B机器的总状态和jobs的个数。机器要改变状态就要重启,求最小的重启次数使jobs全部工作。满足A状态或者B状态jobs可以工作例如输入数据5 5 100 1 11 1 22 1 33 1 44 2 15 2 26 2 37 2 48 3 39 4 300 1 1 代表 要执行0  就需要A是1或者 B是1  所以 前四个只要A都是1  那

2012-03-03 21:07:01 388

原创 poj 2226 二分图 最小顶点覆盖 “草泥马”

参考地址:http://hi.baidu.com/%BA%A3%CF%E0%C1%AC/blog/item/33dc572f55a1bf4b4fc226a7.html题意:图中的"*"代表泥泞,"."代表草,要把所以泥泞的地方全铺上板,板可以进行叠加,输出最小的板数。 一开始看着这道题目,有点儿摸不着头脑,果然像平哥跟龙哥说的那样,这道题的建图模式十分神奇。      画图

2012-03-03 20:57:08 3230

原创 poj 2536 二分图(坐标系中的)

题意:给出一些动物的坐标,还有他们的洞的坐标,然后给出s,v代表了s 秒之后他们就会被吃掉,他们跑的速度是v m/s,最好求最小被吃的数量思路:也就是求,动物和洞之间的最大匹配,然后N-最大匹配就是剩下被吃的动物的数量.#include#includeusing namespace std;struct point{ double x; double y;}P[105],

2012-03-03 07:39:51 372

原创 poj 2239 二分图 “课表”(建图方式值得借鉴)

题意:输入课程数,然后输入第几天的第几节课上这门课,最后输出这一周最多能上几门课。。思路:其实二分图本身不难,关键是怎么抽象出这种图,图左边是课程,图右边是上课时间,就是要课程和上课时间形成一种最大匹配。这道题上课时间的状态记录方法也值得借鉴下,用一个数累加,然后进行记录状态。#includeusing namespace std;int flag[8][13];bool g[310

2012-03-02 22:53:51 357

空空如也

空空如也

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

TA关注的人

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