题目:pku1556
方法:直线相交判断+dijkstra算法
思路:把每个门的两点看成图中的一个点,构造一个以两点距离为权值的图(如果不可直达,记为INF),
再用dijkstra算法求出两个端点点的最短路。
注意:不要用memset初始化g,d;用memset初始化为非0值时,其值并非我们想象的,尽管那值很稳定。
如定义一个数组long a[20];memset(a,1,sizeof(a));用一个循环语句将各元素输出,其值都一样。
但并不是1,而是16843009。
//0 <= n <= 30 #include<iostream> #includ...
题目链接:pku1066(经典)
代码一:线段相交+枚举
//0 <= n <= 30 #include<iostream>#include <algorithm>#include<cmath>using namespace std;struct point{ double x,y; }; struct line{ point s, e; };double max(double a,double b){ return a>b?a:b; }double min(double a,double b){ return a<b?a:b; ...
http://acm.pku.edu.cn/JudgeOnline/problem?id=2653
//with 1 <= n <= 100000, the number of sticks for this case//these numbers are the planar coordinates of the endpoints of one stick// You may assume that there are no more than 1000 top sticks#include<iostream>#include<cmath>using namespace std...