自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王老大

如果这是你所爱的,要坚持,并踏实。

  • 博客(17)
  • 收藏
  • 关注

原创 POJ 1700(过河问题)

此题讲的是N个人过河,每个人都有自己的过河时间,一条船只能承受2个人,所用时间为其中过河时间最多的,所以呢,想到有两种情况,第一种:过河时间最少的人来回接送其他人,第二种:过河时间最少和次少的人来回接送其他人,刚开始就觉得第一种时间必然是最少的,但是仔细想想,不然。因为第一种情况虽然单次过河时间少,但送人的次数要多,如第1个人(过河时间最少)接送第i人dp[i]=dp[i-1]+time[0]

2015-03-31 18:53:59 609

原创 经典背包问题 01背包+完全背包+多重背包

转自http://blog.csdn.net/lyhvoyage/article/details/854585201 背包有n 种不同的物品,每个物品有两个属性,size 体积,value 价值,现在给一个容量为 w 的背包,问最多可带走多少价值的物品。  int f[w+1];   //f[x] 表示背包容量为x 时的最大价值  for (int i=0;

2015-03-26 07:13:46 694

原创 HDU 2191 (多重背包)

//未优化01背包#include <iostream>#include <string.h>using namespace std;int c[105],v[105],b[105];int dp[105];int main(){ int n,m,t; cin>>t; while(t--){ cin>>n>>m; for(int i=1

2015-03-24 22:06:15 1014

原创 POJ 1276 Cash Machine (完全背包问题)

题意:给出一个价值sum,然后给出n,代表n个方案,接着n对代表个数与价值,要求最接近sum,但不超过sum的价值。#include <iostream>#include <algorithm>#include <string.h>#include <cstdio>using namespace std;int dp[100010];int main(){ int sum ,i ,

2015-03-22 21:27:02 614

原创 POJ 2184 Cow Exhibition (变种01背包)

题意:有一些奶牛,他们有一定的s值和f值,这些值有正有负,最后让保证s的和为非负且f的和为非负的情况下,s+f的最大值。 思路:很明显的就是取与不取的问题,对于这类问题的第一想法就是背包,但是这道题目很明显与一般的背包不同,因为有负数,但是联想到以前也有这种将负数存入下标的情况,那就是将数组开大,换一种存法 我们用dp[i]存放每个s[i]能得到的最佳F,那么我们就可以根据s[i]的取值采取两种

2015-03-22 07:55:41 716

原创 HDU 1171 Big Event in HDU(01背包)

题意:给出每个物体的价值和物体的数量,如何分使得A,B所得价值最接近并且A的价值不能小于B思路:DP算法,背包问题,求法是先求出总价值sum,再用dp[]求sum/2最多能放多少价值!即可以求出其中一个数了,另一个就是sum-dp[sum/2]了。#include <iostream>#include <cstdio>#include <cstring>using namespace std;

2015-03-22 05:50:01 1219

原创 POJ 1837 Balance (01背包)

题意:有一个天平,左臂右臂各长15,然后给出n,m。n代表有几个挂钩,挂钩给出负数代表在左臂的距离,正数则在右臂;m代表有m个砝码,要你求出使得这个天平保持平衡有几种方法,要求所有砝码全部使用完。思路:首先我们先要明确dp数组的作用,dp[i][j]中,i为放置的砝码数量,j为平衡状态,0为平衡,j<0左倾,j>0右倾,由于j作为下标不能是负数,所以我们要找一个新的平衡点,因为15*20*20 =

2015-03-22 04:45:12 1261 1

原创 POJ 1228 Grandpa's Estate (稳定凸包)

读懂题意很关键,输入一个凸包上的点(没有凸包内部的点,要么是凸包顶点,要么是凸包边上的点),判断这个凸包是否稳定。所谓稳定就是判断能不能在原有凸包上加点,得到一个更大的凸包,并且这个凸包包含原有凸包上的所有点。 首先来了解什么是稳定的凸包。 比如有4个点: 这四个点是某个凸包上的部分点,他们连起来后确实还是一个凸包,但是它们不是稳定的, 我们发现,当凸包上存在一条边上的点只有端点两个

2015-03-21 14:03:22 858

原创 POJ 1584 A Round Peg in a Ground Hole(点到直线距离,圆与多边形相交,多边形是否为凸)

题意:给出一个多边形和一个圆,问是否是凸多边形,若是则再问圆是否在凸多边形内部。分3步:1、判断是否是凸多边形2、判断点是否在多边形内部3、判断点到各边的距离是否大于等于半径上代码:#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorit

2015-03-20 16:54:53 717

原创 POJ 2826 An Easy Problem?! 好题

题目大意就是两根木块组成一个槽,问槽里能装多少雨水,注意雨水垂直落下,思路也很简单,就是分类讨论有点糟。 1.如果两条线段不相交或者平行,则装0; 2.有一条平行x轴,装0; 3.若上面覆盖下面的,装0; 4.其它,叉积求面积。直接上代码:include include include

2015-03-17 00:18:00 1021

原创 POJ 2007 Scrambled Polygon(简单极角排序)

水题,根本不用凸包,就是一简单的极角排序。叉乘#include #include #include #include #include using namespace std;const int maxn=55;struct point{ double x,y;} p[maxn];double cross(point c1,point b1,poin

2015-03-13 10:36:40 554

原创 POJ 1113 Wall (凸包模版题)

好久没写凸包,基本的都忘记了。悲伤。代码:#include <iostream>#include <cstdio>#include <math.h>#include <algorithm>using namespace std;#define N 1050#define PI acos(-1.0)int n,r;struct point{ int x,y; poin

2015-03-11 23:51:12 399

原创 POJ 3347 Kadj Squares(复杂的线段相交问题)

题意:给予n个正方形,要求45°角放置,最左边的正方形紧贴Y轴,所有的正方形的下面的端点都在X轴上。然后按照正方形不能交错但要尽可能的挨着的原则,摆放,最后输出从上往下看能看到的正方形的编号。思路:每新增一个正方形,就让它与左侧的每一个正方形贴紧,求其左端坐标,最终结果一定是最大的那个。然后求相应的最右端坐标。这样就转化为了线段,最后求出每条线段没有被覆盖的长度,如果长度大于0,即可输出,看了一些别

2015-03-11 22:42:47 527

原创 POJ 1410 Intersection(线段与矩形相交)

判断矩形和线段是否相交,没什么说的,正确理解题意中相交的定义具体代码:#include<iostream>#include<stdio.h>#include<cmath>using namespace std;typedef struct{ double x; double y;}point;point rect[4];point line[2];double mul

2015-03-11 18:18:09 385

原创 POJ2653 Pick-up sticks(线段相交判断)

题意是一堆木条从天而降,要找到哪些木条是在最上面的。很简单的一道题,就是直接for循环判断会超时,这里运用了队列的思想。 附上代码:#include <iostream>#include <cstdio>using namespace std;#define eps 1e-8;struct point{ double x; double y;};struct line{

2015-03-11 10:59:46 468

原创 poj 1066 Treasure Hunt

题意:一个正方形围墙内有一些交错的内墙,内墙的端点都在正方形上,在正方形内部有一个点,求从正方形外到这个点的最少要走的门数,门只能是线段的中点方法:从一个点到终点不可能“绕过”围墙,只能穿过去,所以门是否开在中点是无所谓的,只要求四周线段中点到终点的线段与墙的最少交点个数即可。实际上,只需判断四周围墙的所有点与终点的连线与内墙的最少交点加一。 附上代码:#include <iostream>#i

2015-03-10 22:52:49 458

原创 POj 1696 Space Ant (极角排序)

题意:一只蚂蚁,只会向左转,现在给出平面上很多个点,求解一种走法,能使得蚂蚁能经过的点最多,每个顶点该蚂蚁只能经过一次,且所行走的路线不能发生交叉.对于题目所输入的点,先找出最左下方的顶点(即纵坐标最小的顶点),然后对剩下的顶点按照对与左下点的极角排序,然后反复找最左下的点,反复进行极角排序,同时记录排序后左下的顶点.极角排序方法:利用叉积,看向量p1和p2的叉积是否小于零,是则说明p1在p2逆时针

2015-03-10 11:07:35 620

空空如也

空空如也

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

TA关注的人

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