摘要: 题意: 给出一个有N个顶点的多边形,问该多边形内是否存在一点满足在该点可以看到多边形内部任意一个位置。分析: 求多边形内核。#include<stdio.h>#include<string.h>#include<math.h>#define eps 1e-8#define maxn 105struct point{ double x,y;}p[maxn],q[maxn],s[maxn];int n,size,si;void init(){ int i; for(i=1;i<=n;i++) p[i]=s[i]; p[n+1]=p[1]; p[0]=p[. 阅读全文
posted @ 2012-08-16 21:56 'wind 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 题意:有 N 个奶牛,奶牛A可能认为B 优秀,奶牛B可能认为C优秀,这种关系具有单向传递性,即在此情况下,奶牛A认为奶牛C也是优秀的,但奶牛B不一定认为A优秀, 问可以找出有多少个奶牛可以被其他所有奶牛都认为是优秀的。分析:如果奶牛A认为奶牛B优秀,就连一条从B到A的边,求出强连通分量并染色缩点,最后计算入度为0 的强连通分量是否只有一个,如果是则输出该强连通分量内点的 个数,否则就不存在满足条件的奶牛。#include<stdio.h>#include<string.h>#define clr(x)memset(x,0,sizeof(x))#define min(a, 阅读全文
posted @ 2012-08-16 21:52 'wind 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一个有N个节点的无向图和 M 条边,每条边都有一个重力承受度,要从中找出一条从 1 节点到 n节点的路径,使得可以经过的车辆载重最大。分析:类似于最大流中找增广路,在求最短路的松弛操作上加以修改。SPFA:View Code #include<stdio.h>#include<string.h>#define min(a,b)(a)<(b)?(a):(b)#define clr(x)memset(x,0,sizeof(x))#define INF 0x1f1f1f1fstruct node{ int to,next,w;}e[1000005];int 阅读全文
posted @ 2012-08-16 16:02 'wind 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 题意: 国王有 N 个王子,一共有 N个女子,知道了每个王子喜欢的女子,和一组互不冲突的男女匹配,问每个王子可以娶那些女子且不影响其他所有的王子都可以娶到 自己喜欢的女子。分析: 如果某个王子喜欢某个女子,就连一条从该王子到该女子的边,如果某个女子某个王子可以匹配,就连一条从该女子到该王子的边。 如果一些王子和一些女子的同一个强连通分量里,则这些王子可以娶该强连通分量里的任意的女子。#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;#define maxn 40 阅读全文
posted @ 2012-08-16 10:02 'wind 阅读(151) 评论(0) 推荐(0) 编辑