ac通道:
[分析]
看到這道題目,我最先想到的是bzoj1370,明顯的並查集呀
我們設直線a『為與直線a垂直的直線,而互相平行的直線可以互相合併。
若直線a垂直於直線b,則直線a平行於直線b',這樣就可以把垂直轉換為平行。
具體實現過程請參考**。
#include #include #include using namespace std;
int n,m,q;
int fa[2000];
int find(int x)
return tmp;
}void merge(int x,int y)
int main()
merge(a,b);
merge(a+n,b+n);
} else
merge(a+n,b);
merge(a,b+n);
} }int nums=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if((find(i)==find(j)||find(i+n)==find(j+n))&&(i!=j))
nums++;
printf("%d\n",nums/2);
for(int i=1;i<=q;i++)
else if(find(a+n)==find(b)||find(b)==find(a+n))printf("vertical.\n");
else printf("no idea.\n");
} return 0;
}
平面幾何基礎
乙個很有資訊量的部落格 向量p1 x1,y1 p2 x2,y2 內積p1 p2 x1x2 y1y2,外積p1 p2 x1y2 x2y1 先利用外積根據是否有 p1 q p2 q 0來判斷點q是否在直線p1 p2上 再利用內積根據是否有 p1 q p2 q 0來判斷點q是否落在p1 p2之間 要求兩直...
平面幾何常用模板
平面幾何常用模板 定義點的類 struct point 定義向量的類 typedef point vector 定義向量的基本運算 vector operator vector a,vector b vector operator vector a,vector b vector operator ...
UVALive 4650 平面幾何
題意 給出n個點,每個點有點權,要畫兩個圓,每個圓圈中某些點 兩個圓圈中 的點不能相交 兩個圓圈中的點求和再相乘求最大值。有個很關鍵的條件是三點不 共線。相當於一條直線分成兩堆點 兩側 使得兩側和的乘積最大。直接列舉兩個點定下 一條直線,那麼直線上的兩個點有四種情況,同側兩種異側兩種。include...