上一页 1 2 3 4 5 6 7 ··· 27 下一页
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1874这题坑在于会出现重边,必须保留小的那个#include#include#define MAX 9999999int map[1000][1000];int vertex,edge;void init(){ int i,j; for(i=0;iw) map[x][y]=map[y][x]=w; } floyd(); scanf("%d%d",&x,&y); if(map[x][y]>=MAX)printf("-1\n... 阅读全文
posted @ 2013-08-27 20:36 执着追求的IT小小鸟 阅读(181) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1869这题是简单的弗洛伊德算法的转变,在最后判定的时候是跟7进行判定,因为点与点间的路径是没用算上本身那个cost的#include#include#define MAX 9999999int map[1000][1000];int vertex,edge;void init(){ int i,j; for(i=0;i7)return 0; } return 1;}int main(){ int i,j,x,y; while(scanf("%d%d",&vertex... 阅读全文
posted @ 2013-08-27 20:18 执着追求的IT小小鸟 阅读(163) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1385这个是模板题目。核心算法:通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又用同样地公式由D(1)构造出D(2);……;最后又用同样的公式由D(n-1)构造出矩阵D(n)。矩阵D(n)的i行j列元素便是i号顶点到j号顶点的最短路径长度,称D(n)为图的距离矩阵,同时还可引入一个后继节点矩阵path来记录两点间的最短路径。采用的是(松弛技术),对在i和j之间的所有其他 阅读全文
posted @ 2013-08-27 20:17 执着追求的IT小小鸟 阅读(202) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2063#include#include#include#define maxn 1000//表示x集合和y集合中顶点的最大个数! int nx,ny;//x集合和y集合中顶点的个数 int edge[maxn][maxn];//edge[i][j]为1表示ij可以匹配 int cx[maxn],cy[maxn];//用来记录x集合中匹配的y元素是哪个! int visited[maxn];//用来记录该顶点是否被访问过! int path(int u) { int v; for(v=0;v%d... 阅读全文
posted @ 2013-08-26 20:19 执着追求的IT小小鸟 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 匈牙利算法是解决寻找二分图最大匹配的。(一)预备知识 什么是二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 什么是匹配:把上图想象成3男4女搞对象(无同性恋),连线代表彼此有好感,但最终只能1夫1妻,最终的配对结果连线就是一个匹配。匹配可以是空。 什么是最大匹配:在有好感的基础上,能够最多发展几对。 现在要用匈牙利算法找出最多能发展几对。[color=green][size=medi 阅读全文
posted @ 2013-08-26 17:03 执着追求的IT小小鸟 阅读(268) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1068这题是模板题。题目大意:给你每个人互相认识的人,然后问最多能找到多少个人都互不认识。其实就是找:最大独立集合!已知:二分图最大独立集合 = 节点数 - 最大匹配数而:最大匹配数=最大匹配 / 2。用匈牙利算法先算出最大匹配,然后就可以解了。对于这个算法,每次找到增广路后,只需记录cy,就y集合中对应的x元素,因为每次查找都是从x开始,这样在深搜过程中就可以判断出下面,即y元素集合中是否已经被匹配了,无需cx,cy都记录。#include#include#include#define maxn 1000/ 阅读全文
posted @ 2013-08-26 17:02 执着追求的IT小小鸟 阅读(202) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1756方法:求解以某点为起点的射线与多边形边的交点个数,奇数时则点在内,偶数在外需要特别注意交点在顶峰和谷底以及射线与边平行的情况#include#includetypedef struct node{ double x,y;}point;point p,a[110],b;int n;double min(double a,double b){ return a>b?b:a;}double max(double a,double b){ return a>b?a:b;}int point_i... 阅读全文
posted @ 2013-08-24 16:52 执着追求的IT小小鸟 阅读(226) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1411直接套公式公式:欧拉四面体公式,用来求三棱椎的体积。V=sqrt((4*a*a*b*b*c*c-a*a*(b*b+c*c-m*m)*(b*b+c*c-m*m)-b*b*(c*c+a*a-n*n)*(c*c+a*a-n*n)-c*c*(a*a+b*b-l*l)*(a*a+b*b-l*l)+(a*a+b*b-l*l)*(b*b+c*c-m*m)*(c*c+a*a-n*n)))/12;如三棱椎OABC,O为顶点,ABC为底面三角形则a-OA (线段OA 的长度为 a)b-OB (OB 长为 b)c-OC (. 阅读全文
posted @ 2013-08-24 10:59 执着追求的IT小小鸟 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 算法流程:1:计算凸多边形y方向上的极值点,记为ymin,ymax。经过ymin,ymax作两条平行于x轴的水平线。这两点意见就是对踵点,计算它们的距离并维护最大值2:同时旋转两条直线,直至某一条线与多边形的一条边重合。此时产生了新的一对对踵点,计算新的距离并更新重复前两个步骤,直至重新回到ymin,ymax这对对踵点。输出最大直径(这里做适当改变就可以求最大面积等)//o(n)int dia_rotating_calipers(int n){ int i,q,dia=0; for(i=0,q=1;icross_product(stak[i],stak[i+1],stak[q]))... 阅读全文
posted @ 2013-08-24 08:41 执着追求的IT小小鸟 阅读(175) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2202这题先用凸包找出顶点,再暴力枚举两种凸包一:Graham扫描法:(1)找出点集p[]中最左下的点p1,把p1同点集中其他各点用线段连接,并计算这些线段与水平线的夹角,然后按夹角从小到大和按到p1的距离从近到远排序(夹角范围为 [0, 180)度,而且可以删除相同夹角且距离p1较近的点,保留最远点,这样可减少计算量。因为直线上的非端点不是凸包的极点,即如果p1,p2,p3在一条直线上,则只取凸点p1,p3。p2不在端点,故可以去掉),得到新的节点序列p1,p2,...pn.依次连接这些点,得到一个多边形( 阅读全文
posted @ 2013-08-23 16:59 执着追求的IT小小鸟 阅读(638) 评论(4) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 27 下一页