自定义博客皮肤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)
  • 收藏
  • 关注

原创 hdu 2845 Beans--二维DP

/* 题意:从格子里取数字,取了当前数字,则前一个后一个都不能取,前一行后一行也不能取 看别人的 DP 先是对每行DP f[i]=max(f[i-2]+a[i],f[i-1]) 每行计算过后,再对每行的结果进行这样的DP 这题很巧 对每行来说,其中的每个元素不能取其前面的和后面的 把行当做元素,那么这个矩阵也是一行,某行取了数,则其前一行和后一行不能取 模型一样 */ #includ

2012-08-16 16:14:26 605

原创 poj 1696 Space Ant--有关极角

/* 题意:从最低的点开始,不能向右拐,问能经过多少点? 能定是经过所有点了 从最低点开始,求与其极角最小的点,作为新的起点,在需找与这个点成极角最小的点,依次即可 */ #include #include struct point { int x,y,n; }dian[60]; int n; int dis(point a,point b){return (a.x-b.x)*(a.x

2012-08-16 10:43:35 470

原创 poj 2007 Scrambled Polygon--按极角排序

/* 给一个凸包,但是点序混乱,让你从(0,0)开始逆时针找到这个凸包 就是按极角从小到大排序 是求凸包算法的一部分 */ #include #include struct point { int x,y; }dian[55]; int n; int cross(point p,point s,point e) { return (e.x-s.x)*(p.y-s.y)-(p.x-s.x)

2012-08-15 15:38:26 452

原创 poj 1113 Wall--凸包

/* 题也没读,大致是这么个意思:给出若干个点,让建一个围墙,包含所有的点,且距所有点的距离不小于l。 所以主要就是求凸包 这里有一些讲解 http://www.byywee.com/page/M0/S634/634173.html http://www.byywee.com/page/M0/S634/634180.html http://www.byywee.com/page/M0/S634

2012-08-15 15:04:35 428

原创 poj 2653 Pick-up sticks--线段相交--vector

/* 题意:随即扔一些棒子,输出在最上面的棒子(没有那个棒子压着它)的编号 线段相交问题 本体用到了 vector 注意 v.erase(remove_if(v.begin(),v.end(),ok),v.end()); 用法 同时 v.erase 返回的是删除过后,下一个元素的位置,不要再for里面用 it++ 在循环里面自己操作 */ #include #inc

2012-08-14 16:24:35 463

原创 poj 1269 Intersecting Lines--直线相交

/* 题意:判断直线与直线的关系 是一条直线输出LINE 平行不在一条直线上NONE 相交输出交点 */ #include struct point { int x,y; }; struct line { point p1,p2; int a,b,c; }; line ppline(point p1,point p2)//根据两点求直线 { line l; l.p1=p1; l.

2012-08-13 20:41:47 559

原创 poj 3304 Segments--直线和线段相交

/* 题意:给一些线段 问你是否存在这样一条直线:所有这些线段在直线上的投影有公共点 假设存在 那么过这个点,做这条直线的垂线,这条垂线过所有线段 因为所有线段的投影都覆盖这点,因为他们的投影有这个公共点么 所以就是找一条直线穿过所有线段 所以枚举任意两个点组成的直线 看是否满足要求 */ #include #include const double zero=1e-8; struct

2012-08-13 19:47:54 577

原创 poj 2398 Toy Storage --基本上和poj 2318 一样

/* poj 2398 Toy Storage 基本上和2318一样 但是要求输出 有t个玩具的区域的个数 t从小到大 需要注意的是 这次的挡板的顺序不是岸从左到右的顺序了,需要排序 简单的计算几何 就是一个矩形的范围 被n条线段分成n+1个区域 然后有m个点的坐标,他们归属于所在的区域 就是算一下点是在线段左侧还是右侧 用向量的叉积即可 保证线段所在的向量的x>

2012-08-13 16:38:41 400

原创 poj 2318 TOYS--点在直线左侧还是右侧

/* poj 2318 TOYS 简单的计算几何 就是一个矩形的范围 被n条线段分成n+1个区域 然后有m个点的坐标,他们归属于所在的区域 然后输出各区域内点的个数 就是算一下点是在线段左侧还是右侧 用向量的叉积即可 保证线段所在的向量的x>0 那么 叉积>0 点在左侧 叉积<0 点在右侧 二分求解即可 */ #include struct point { int

2012-08-13 16:02:01 711

原创 poj3422 Kaka's Matrix Travels 最大费用最大流

/* poj3422 Kaka's Matrix Travels 题意:有个方阵,每个格子里都有一个非负数,从左上角走到右下角,每次走一步,只能往右或往下走,经过的数字拿走 每次都找可以拿到数字和最大的路径走,走k次,求最大和 这是 最大费用最大流 问题 每次spfa都找的是一条和最大的路径 s--到左上角的边流量是K限制增广次数 求最大费用最大流只需要把费用换成相反数,用最小费用最大流求解

2012-08-12 17:35:00 2791

原创 KM算法 最优匹配(最大权匹配) hdu 2255 奔小康赚大钱 最小权匹配 poj 2195 Going Home

最大权二分匹配问题就是给二分图的每条边一个权值,选择若干不相交的边,得到的总权值最大。解决这个问题可以用KM算法。理解KM算法需要首先理解“可行顶标”的概念。可行顶标是指关于二分图两边的每个点的一个值lx[i]或ly[j],保证对于每条边w[i][j]都有lx[i]+ly[j]-w[i][j]>=0。如果所有满足lx[i]+ly[j]==w[i][j]的边组成的导出子图中存在一个完美匹配,那么这个

2012-08-11 17:09:09 2646

原创 poj 1422Air Raid--最小路径覆盖

/* 题意:有个城镇,所有路都是单行道,并且没有环,所有路都连接在十字路口上 现在用最少的伞兵走完这些式子路口,每个只能走一遍 很明显的最小路径覆盖 最小路径覆盖=点数-最大匹配 需要拆点 所有式子路口 在X中一个 在Y中一个 路把两个集合中十字路口连接起来 求最大匹配 还是匈牙利 */ #include #include using namespace std; vectorv[15

2012-08-03 15:59:59 585

原创 poj 1325 Machine Schedule--最小点覆盖

/* 题意:A机器有n(0~n-1)个模式,B机器有m(0~m-1)个模式 先有k个任务需要做,可以用A机器的ai模式做或者用B机器的bi模式做 任务无先后,换模式序重启,开始两个机器都在模式0 问最少需要重启几次 二分图最小点覆盖 A的模式为X集 B的模式为Y集 按任务建边 求最小点覆盖 任务是求最少的重启次数,也就是最少要工作在几个模式(除了0模式) 只要边的任何一个端点被选中就

2012-08-03 14:24:16 426

原创 sgu 242 Student's Morning--最大流 或 多重匹配

/* n同学分别来自不同的学校,他们想去学校玩,但是不像一个人去,所以去某个学校的人数应>=2 问是否有k个学校满足要求 建边: [s,学校] 权为2 [学校,同学] 权为1 [同学,t] 权为1 据说这题可以用匹配做,以后看看 */ #include #include #define inf 0x7ffffff struct edge { int u,v,f,next; }e[10001

2012-08-01 17:02:59 1275

原创 sgu 176 Flow construction--有源汇 有上下界 最小流

/* SGU 176 Flow construction 题意:有些节点(编号1~n,1为源,n为汇)和管道,用来运输某种物质(substance) 某些管道必须满流,有些不必,找到一个最小流,满足要求 输入: 结束数目 管道数目 管道{ 管道前节点,后节点,最大流量,是否需要满流(1需要0不需要) } 就是求一个最小流 http://blog.csdn.net/qq172108805/art

2012-08-01 15:34:57 1955

原创 codeforces 183 B Zoo--计算几何+枚举

/* 题意:有n个望远镜,被放置在X轴1~n的位置上,现有m只鸟,望远镜可以以任何角度观察,能看到在那条直线上的所有鸟, 问所有望远镜能看到的鸟的数量之和 计算几何+暴力 */ #include #include int n,m; int num[1000010]; struct line//边结构 { __int64 a,b,c; }; struct point//点 { __int64

2012-08-01 14:53:09 2049

原创 CodeForces 180E Cubes--后续指针--当前个数

题意:大致就是   一串数字中删除k个,是剩下的串中连续数字最长,输出长度 贴两个别人的代码,加了注释 /* */ #include #include #include #include #include #include #define oo 2000000000 #define ll long long using namespace std; struct node { int ne

2012-08-01 10:21:10 473

空空如也

空空如也

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

TA关注的人

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