hdoj5563(簡單幾何)

2021-07-12 03:11:11 字數 1599 閱讀 3945

笑死我了,居然一遍就過了。

題意:給你5個點,讓你判斷能否組成乙個五角星;

思路:

利用對稱性,應該有很多種方法。弱打的很麻煩。但是那個兩點式公式去判斷另外乙個點是否在一條直線上的那個判斷,還是蠻喜歡的

double dd=(double)(xx[i]-onex)/(twox-onex)-(double)(yy[i]-oney)/(twoy-oney);

然後根據題目要求,去使用dd

#include 

#include

#include

#include

#include

using namespace std;

#define max 110

#define ll __int64

#define mod 9973

#define n 1010

double x[10];

double y[10];

double xx[10];

double yy[10];

bool vis[10];

int solve()

else

if(i==2)

else

if(i==3)

else

if(i==4)

else

if(i==5)

double dd=(double)(xx[i]-onex)/(twox-onex)-(double)(yy[i]-oney)/(twoy-oney);

if(dd<0)

dd=-dd;

if(dd>0.00001)

}return1;}

int main()

/*xx[1]=x[1];yy[1]=y[1];

printf("%lf

%lf\n",xx[1],yy[1]);

xx[2]=x[2];yy[2]=y[2];

printf("%lf

%lf\n",xx[2],yy[2]);

xx[3]=x[4];yy[3]=y[4];

printf("%lf

%lf\n",xx[3],yy[3]);

xx[4]=x[5];yy[4]=y[5];

printf("%lf

%lf\n",xx[4],yy[4]);

xx[5]=x[3];yy[5]=y[3];

printf("%lf

%lf\n",xx[5],yy[5]);

int ans=solve();

printf("%d\n",ans);

*/int flag=0;

for(int i=1;i<=5;i++)

if(flag) break;}}

if(flag) break;}}

if(flag) break; }}

if(flag) break;

}if(flag) break;

}if(flag)

printf("yes\n");

else

printf("no\n");

}return 0;

}

hdu5563解題報告 計算幾何

題目大意 給5個點,判斷能不能組成乙個正五角星 解題思路 簡單的計算幾何,把乙個點,同每個點的距離列舉出來 只有兩種長度的邊,和相鄰的點的短邊,和不相鄰的點的長邊 在排序下,挨個算誤差,注意用fabs來算。bc是時候看到計算幾何就放了,沒想到是個水題 include include include ...

計算幾何習題(簡單)

凸包 切了它以後,我跳入計算幾何的坑 旋轉卡殼 基於凸包的模板,在凸包 的基礎上加乙個 getmax 的操作 即查詢凸包的直徑 用我感覺有點貪心 的思想去列舉每一條凸包上的邊,取到最大的三角形 s lh 2 l 不變,s 越大 h 越大 即可 信用卡凸包 暴力建點做凸包,又可以發現轉角處的弧長和加起...

POJ 1263 簡單幾何?!

include include include include include include using namespace std const double dinf 1e100 struct point typedef point vector typedef vectorpolygon ve...