- 博客(25)
- 资源 (3)
- 收藏
- 关注
原创 poj1042(贪心+优先队列)
题目链接:poj1042/*poj 1042 Gone Fishing 贪心+优先队列题意:John现有h个小时的空闲时间,他打算去钓鱼。钓鱼的地方共有n个湖,所有的湖沿着一条单向路顺序排列(John每在一个湖钓完鱼后,他只能走到下一个湖继续钓),John必须从1号湖开始钓起,但是他可以在任何一个湖结束他此次钓鱼的行程。 此题以5分钟作为单位时间,John在每个湖中每5分钟钓的
2014-04-30 16:11:59 1102
原创 poj1080(LCS变形)
题目链接:poj1080/*poj 1080题意:给出两个基因字符串a,b,每一种匹配都有一个值,可以在串中添加‘-’,改变匹配的顺序,最后求全部匹配的最大值思路:先将字符串转化,每个字符分别用0,1,2,3,表示‘-’用4表示状态:d[i][j]表示串a前i个和串b前j个匹配的最大值转移方程:d[i][j] = max( d[i-1][j-1]+c[a[i]][b[j]], d[
2014-04-29 11:01:17 779
原创 poj2385(DP)
题目链接:/*poj 2385题意:有两颗树,同一时间内只有一个树会掉苹果,时间为n,在苹果树间来回的次数最多为m次,问最多拿到多少苹果思路:DP,注意初始化状态:d[i][j][k]表示第i分钟第j个来回在第k棵树下拿到最多的苹果数d[i][j][0] = max(d[i-1][j-1][1], d[i-1][j][0]) + a[i][0];d[i][j][1] = max(
2014-04-28 18:58:50 721
原创 poj1160DP(POST OFFICE 邮局问题)
题目链接:/*poj1160题意:用数轴描述一条高速公路,有V个村庄,每一个村庄坐落在数轴的某个点上,需要选择P个村庄在其中建立邮局,要求每个村庄到最近邮局的距离和最小。状态:d[i][j]:前i个村庄建j个邮局的最小花费转移方程:d[i][j] = min(d[i][j], dp[k][j-1]+ dis[k+1][i]);dis[i][j]表示村庄i到村庄j之间建一个邮局的花费
2014-04-26 10:56:27 1239
原创 poj3786(DP,递推)
题目链接:poj3786/*poj3786题意 :由0,1组成的长度为n的数列x1,x2,x3,x4.....xn,定义一个操作为AdjBC(x) = x1*x2 + x2*x3 + x3*x4 + … + xn-1*xn 。输入两个数n和m,求长度为n的数列,经过上述操作,最后结果为m共有多少种思路 : DP,递推d[i][j][0]:表示前i项组成和为j且第i项为0共有多少种
2014-04-23 16:23:29 532
原创 hdu2852(线段树求第k大数)
题目链接:/*hdu2852 线段树求第k大数题意:有三种操作,1、0 x 向容器中插入一个数x 2、1 x 在容器中删除一个数x 3、2 x k,求出容器中大于x的第k个元素。思路:求出容器中大于x的第k个元素,可以先求出<=a的元素的数量cnt,然后就等价于求区间[1..N]中第Kth = cnt+k的元素…注
2014-04-16 20:59:20 1254
原创 hdu2473(并查集删点+设立虚父结点)
题目链接:/*hdu2473并查集+设立虚父节点题意:有n个邮件,编号为0~n-1,有两种操作 1、M x y 将x和y合并成为一类邮件 2、S x 将x从所属邮件集合中取出思路:设立虚父结点,一般并查集初始化的时候每个点的父结点都是自己,本题要删结点,一般并查集的初始化方法行不通,举个例子,比如1,2,3的父结点都是1,现在删除1,1的父结点还是1,2,3的父结点也为
2014-04-16 18:30:08 909
原创 poj2236(并查集+计算几何)
题目链接:/*题意:有很多台电脑,给定一个距离d,如果两台电脑距离小于等于d,那么这两台电脑可以直接相连,两种操作:1、O x 表示修好第x台电脑 2、S x y 检查x和y能否通信思路:每修好一台电脑就判断能否和已修好的电脑相连,同时用v[]标记电脑是否已修好,判断的话,直接判断是不是在一个集合即可*/#include #include #include
2014-04-16 15:07:21 589
原创 hdu3265(线段树求矩形面积并)
题目链接:hdu3265/*hdu 3265 扫描线求面积并题意:一个矩形的海报中间被挖出一块矩形的空白,将许多个这样的海报贴在窗户上,问最后窗户被覆盖的面积思路:将一张海报可分为四个部分,然后用扫描线求矩形面积并即可需注意的是答案会超int*/#include#include#includeusing namespace std;#define lson l, mid,
2014-04-13 14:29:33 652
原创 poj1436(线段树成段更新)
题目链接:/*poj1436成段更新(难点:端点的处理)题意: n条竖直线段,每行输入y1,y2,x,分别表示线段下端点,上端点,横坐标定义两天线段可见:如果一条水平线段连接它们,且在它们之间不经过其它线段。最后求有多少组3条线段是两两可见的。思路:首先将所有线段按x坐标的大小进行排序,然后对y轴建树对每一条线段执行查询操作,查询当前线段区间内可见线段有哪些,并记录,然后更
2014-04-11 11:00:56 782
原创 poj2828(线段树解插队问题)
题目链接:/*题意: n个人,每一行两个数,pos和val,pos表示这个价值为val的数要插入到位置为pos的数后面,最后按位置顺序输出思路:线段树 考虑倒着插入队列,因为后插入队列的元素一定不会受到先插入队列元素的影响每次插入时,我们考虑当前结点左儿子中空位的个数 如果左儿子中的空位置个数s[rt=num,向左儿子中插 如果左儿子中的空位置个数s
2014-04-07 16:30:32 705
原创 hdu1180诡异的楼梯(BFS+优先队列)
题目链接:/*思路:BFS+优先队列 每当遇到楼梯的时候, 1、如果能过 a、通过楼梯后不会超出边界,则走过楼梯 b、通过楼梯后超出边界,则该点不需再入队 2、如果不能通过,时间加1,此点继续入队,等待下一次楼梯变换方向*/#include #include #include #include #include #incl
2014-04-07 09:12:32 1186
原创 二分+贪心(总结)
最近做了几道二分+贪心的题目,做下总结基本思路:通过二分,将范围逐步缩小,直到最优解1、poj2456/*题意: 有n个牛栏,选m个放进牛,相当于一条线段上有 n 个点,选取 m 个点,使得相邻点之间的最小距离值最大思路:贪心+二分 二分枚举相邻两牛的间距,判断大于等于此间距下能否放进所有的牛。*/#include #include #include
2014-04-04 20:59:20 4023 1
原创 poj1064(贪心+浮点二分)
题目链接:poj1064/*题意: 给n条线段,单位为米,要对这些线段裁剪,剪出m条等长的线段,且使这些线段尽可能地长,不能小于1厘米思路:二分*/#include #include #include #include using namespace std;const int N = 1e6+10;const double eps = 1e-6;double
2014-04-03 20:35:41 896
原创 poj2456(贪心+二分)
题目链接:poj2456/*题意: 有n个牛栏,选m个放进牛,相当于一条线段上有 n 个点,选取 m 个点,使得相邻点之间的最小距离值最大思路:贪心+二分 二分枚举相邻两牛的间距,判断大于等于此间距下能否放进所有的牛。*/#include #include #include #include using namespace std;const int N
2014-04-03 19:30:45 5185 2
原创 poj2184(01背包变形)
题目链接:poj2184/*题意: 有一些牛,每个牛有一个的智商值(用S表示)和幽默度(用F表示)选出若干牛,使S的和非负且F的和非负时,S+F最大思路: 将S当做体积,F当做价值,来装01背包。循环时,体积为负时,循环的方向和体积为正时相反。最多100组,每组-1000~1000,所以体积的范围[-1000*100,1000*100],因为体积有负数存在,所以将
2014-04-02 18:35:05 809
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人