2014年1月21日

Channel Allocation

摘要: poj1129:http://poj.org/problem?id=1129题意:给你一个图,然后求图的最小的顶点着色情况。题解:可以采用近似有效算法。对于一个顶点,检查与他相邻的顶点的着色情况,如果对于当前的,这种颜色,她相邻的顶点没有着上,那么这个点就可以染上这种颜色,否则把当前的颜色加1,然后重新检查直到满足为止.最后统计一下一共然后多少种颜色即可。#include#include#include#includeusing namespace std;int color[27];//记录颜色的使用情况,每个点的着色情况int map[27][27];//储存图int n,c;//点的个数 阅读全文

posted @ 2014-01-21 18:08 天依蓝 阅读(435) 评论(0) 推荐(0) 编辑

2013年12月1日

Ombrophobic Bovines

摘要: poj2391:http://poj.org/problem?id=2391题意:一个人有n个农场,每个农场都一个避雨的地方,每个农场有一些牛,每个避雨的地方能容纳牛的数量是有限的。农场之间有一些道路可以连通。现在给出每个农场的牛的数量以及每个避雨点的值,问你所有的牛都找到一个避雨点的时间最短是多少。题解:本题个人认为对于初学者来说,比较难了。看了别人的题解,本题的考察的知识点有:Floyd+二分+网络最大流,以及图论里面的拆点和建图。首先:对于所有的牛来说,如果农场是连通的,则最短的时间最坏的情况是任意两点之间距离的最大值所以要用Floyd来求n源最短路。然后最初最大的那个值。第二:建图,超 阅读全文

posted @ 2013-12-01 14:05 天依蓝 阅读(372) 评论(0) 推荐(0) 编辑

2013年11月21日

Tunnel Warfare

摘要: hdu1540:http://acm.hdu.edu.cn/showproblem.php?pid=1540题意:给你一列村庄,每个村庄给一个标号,1--n,然后毁掉一些村庄,或者重建几个村庄,重建是按照毁掉的反序建的,也就是说,最新建的是最后毁掉的那个村庄。在这些过程中会有一些查询,查询pos这个村庄所在的最长的连续村庄的个数。题解:很容易想到用线段树来维护,维护区间的最大左连续和最大右连续值,毁掉就是单点更新操作,同时把毁掉的村庄一次放入队列中,重建的时候只要从队列中取出即可。唯一难的是查询操作。一开始,我没有想到如何查询。最后只好查询了别人的代码。分几种情况, 如果pos在该区间的左连续 阅读全文

posted @ 2013-11-21 19:02 天依蓝 阅读(319) 评论(0) 推荐(0) 编辑

2013年11月19日

LCIS

摘要: hdu3308:http://acm.hdu.edu.cn/showproblem.php?pid=3308题意:给你 100000个数列,然后更新某个点,然后查询区间内最长连续上升数列的长度,用线段树来维护区间的最大连续值,左连续最大值,右连续最大值,区间的左端点,区间的右端点。对于更新,父节点的最大值,首先求左儿子的最大值,右儿子的最大值,比较,选出大者,如果左儿子的又端点小于右儿子的左端点,则要考虑左儿子的右连续+右儿子的左连续是否大于刚才的那个值,选出大的更新。对于父节点的左连续,如果左儿子的左连续等于区间长度则父节点的左连续等于左儿子的左连续+右儿子的左连续,同理更新父节点的右连续。 阅读全文

posted @ 2013-11-19 21:38 天依蓝 阅读(223) 评论(0) 推荐(0) 编辑

Hotel

摘要: poj3667:http://poj.org/problem?id=3667题目大意: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 @ 2013-11-19 13:42 天依蓝 阅读(158) 评论(0) 推荐(0) 编辑

2013年11月18日

Billboard

摘要: hdu2795:http://acm.hdu.edu.cn/showproblem.php?pid=2795题意:给一个h*w的公告牌,h是高度,w是宽度,一个单位高度1为一行,然后会有一些公告贴上去,公告是1*wi大小的长纸条,优先贴在最上面并且最左边的位置,如果没有空间贴得下,就输出-1,可以的话,就输出所贴的位置(第几行)。题解:用线段树来维护。把高度看成每一个节点,即每一行看成线段树的一个节点,而w看成底层节点的值,然后每个节点维护区间的最大值。由于h会达到10的9次方,但是只有200000的海报。随意当h大于200000时候,只需建立n==200000的树。 1 #include . 阅读全文

posted @ 2013-11-18 18:49 天依蓝 阅读(238) 评论(0) 推荐(0) 编辑

2013年11月17日

Minimum Inversion Number

摘要: hdu1394:http://acm.hdu.edu.cn/showproblem.php?pid=1394题意描述:给你一个有0--n-1数字组成的序列,然后进行这样的操作,每次将最前面一个元素放到最后面去会得到一个序列,那么这样就形成了n个序列,那么每个序列都有一个逆数,找出其中最小的一个输出!题解:求最小逆序数的时候有个巧妙的想法,当把x放入数组的后面,此时的逆序数应该为x没放入最后面之前的逆序总数加上(n-x)再减去(x-1);sum = sum+(n-x[i])-(x[i]-1)。求逆序数:此题方法1:暴收 1 #include 2 #include 3 #include 4 #in 阅读全文

posted @ 2013-11-17 15:22 天依蓝 阅读(119) 评论(0) 推荐(0) 编辑

2013年11月16日

Area of Simple Polygons

摘要: poj1389:http://poj.org/problem?id=1389题意:求矩形面积的并题解:扫描线加线段树 同poj1389 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn=2002; 7 int num; 8 struct Node{ 9 int l;10 int r;11 int tp;12 int y;13 bool operator =r)update(l,r,f,idx1){57 mid=(... 阅读全文

posted @ 2013-11-16 17:07 天依蓝 阅读(132) 评论(0) 推荐(0) 编辑

Atlantis

摘要: poj1151:http://poj.org/problem?id=1151题意:求矩形面积的并题解:扫描线加线段树 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn=202;//注意这里的初始化,不能开小了,是200条边 7 int num;//记录x坐标的个数 8 struct Node{ 9 double l;//边的左端点 10 double r;//边的又端点 11 int tp;//是出度边还是入度边 12 double y;/... 阅读全文

posted @ 2013-11-16 17:03 天依蓝 阅读(168) 评论(0) 推荐(0) 编辑

2013年11月4日

To the Max

摘要: poj1050:http://poj.org/problem?id=1050题意:给你一个n*n的矩阵,求一个和最大的一个子矩阵。题解: 从第i行开始,对把i行以后的每一行一次加到第i行上,每加一次,求一遍最大子序列的和。然后枚举每一行,更新ans值。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int a[102][102]; 7 int temp[102]; 8 int n,ans; 9 void in(){10 memset(a,0,sizeof(a));11 for(int i=... 阅读全文

posted @ 2013-11-04 18:44 天依蓝 阅读(201) 评论(0) 推荐(0) 编辑

导航