poj 1066 Treasure Hunt

2022-08-05 15:15:13 字數 1568 閱讀 4892

大意; 問在房間中有一份寶藏,但是房間中有一些隔板,問最少需要通過多少隔板

思路: 連結寶藏與爆破地點,列舉每一條直線尋找最少破壞的隔板。。

1 #include 2 #include 3 #include 4

using

namespace

std;

5const

int maxn = 110;6

const

double eps = 1e-8;7

8double fix_double(double

x)11

12int sign(double

x)15

16struct

point

19 point(double x=0,double y=0

):x(x),y(y){}

20 point operator - (const point b) const

23};

2425

struct

line

28line(point _a,point _b)

32};

33double

dot(point o,point a,point b)

3839

double

cross(point o,point a,point b)

4445

intn;

46line ln[maxn];

47 point tr,pt[maxn*10];//

tr為寶藏,pt為邊上的點

4849

double

dis(point a,point b)

5253

bool cmp(point a,point b)

59//

60int

in_line(point pt, line li)

6566

//0不相交,1規範相交,2交與短點,3,有重合部分

67int

across(line ab,line cd)

8081

intsolve()

87 pt[cnt++] = point(0,0

);88 pt[cnt++] = point(0,100

);89 pt[cnt++] = point(100,0

);90 pt[cnt++] = point(100,100

);91 sort(pt,pt+cnt,cmp);

92for(int i=1;i)

99if(tottot;

100}

101return ans+1

;102

}103

intmain()

104109 cin>>tr.x>>tr.y;

110int res =solve();

111 cout<<"

number of doors =

"112}

113return0;

114 }

poj 2606 Rabbit hunt 解題報告

題意 給出n個點的整數座標 n 700 ,求一條直線,使得在這條直線上的點數最多,輸出點數。 思路 簡單幾何題。採用幾何中三個點是否在一條直...