amphiphilic carbon molecules
儲存個極角排序的板子。
極角排序有兩種。一種是atan2,速度快,但是有精度誤差。另一種是叉積,速度慢但是只用進行整數運算。
注意用叉積極角排序的時候,要把上半區和下半區分開來排,而且每個點所在的半區要唯一。
struct point
intgetp()
}a[maxn]
;int
cross
(point a, point b)
bool
cmp(point a, point b)
ac**:
#include
using
namespace std;
typedef
long
long ll;
const
int maxn =
1e3+
5, inf =
0x3f3f3f3f
;struct point
intgetp()
}a[maxn]
;int
cross
(point a, point b)
bool
cmp(point a, point b)
vector vp;
intmain()
for(
int i =
0; i < n;
++i) cin >> a[i]
.x >> a[i]
.y >> a[i]
.c;int ans =0;
for(
int i =
0; i < n;
++i));
else vp.
push_back
(point);
}sort
(vp.
begin()
, vp.
end(
), cmp)
;//神級技巧2,尺取法模擬掃瞄線
//起手是2是因為列舉了乙個點,然後從第乙個點開始掃
int l =
0, r =
0, cnt =
2, sz = vp.
size()
;while
(l < sz)
vp.clear()
;}cout << ans <<
'\n';}
return0;
}
codechef – red and blue points
#include
using
namespace std;
typedef
long
long ll;
const
int maxn =
2e3+
5, inf =
2e9+10;
struct point
ll getp()
}a[maxn]
;ll cross
(point a, point b)
bool
cmp(point a, point b)
vector vp;
intmain()
for(
int i = n; i < n + m;
++i)
int ans = inf;
for(
int i =
0; i < n + m;
++i));
}sort
(vp.
begin()
, vp.
end(
), cmp)
;int l =
0, r =
0, g0 =
0, g1 =
0, c0 =
0, c1 =
0, sz = vp.
size()
;if(a[i]
.c ==
0) g0 =1;
else g1 =1;
while
(l < sz)
while
(r != l &&
cross
(vp[l]
, vp[r]
)>0)
ans =
min(ans, c0 + m - c1 - g1)
; ans =
min(ans, c1 + n - c0 - g0);if
(vp[l]
.c ==0)
--g0;
else
--g1;
++l;
//l != r的時候才要清,否則r就少算一次
if(l != r)
} vp.
clear()
;}cout << ans << endl;
}return0;
}
又有極角排序了。
#include
using
namespace std;
typedef
long
long ll;
typedef pair<
int,
int> pii;
const
int maxn =
1600
;struct point
}a[maxn]
, ta[maxn]
;ll cross
(point a, point b)
bool
cmp(point a, point b)
ll dis2
(point a, point b)
ll yu
(point a, point b, point c)
intmain()
sort
(ta, ta + p, cmp)
;int l =
0, r =0;
point zx = point
;while
(l < p)
++l;}}
cout << ans << endl;
return0;
}
幾何 極角排序詳解
關於極角排序 在平面內取乙個定點o,叫極點,引一條射線ox,叫做極軸,再選定乙個長度單位和角度的正方向 通常取逆時針方向 對於平面內任何一點m,用 表示線段om的長度 有時也用r表示 表示從ox到om的角度,叫做點m的極徑,叫做點m的極角,有序數對 就叫點m的極座標。那麼給定平面上的一些點,把它們按...
計算幾何之極角排序
1.利用叉積的正負來作cmp.即是按逆時針排序 bool cmp const point a,const point b 逆時針排序 2.利用complex的內建函式。includebool cmp const point p1,const point p2 360度範圍逆時針排序 3.利用arct...
極角排序詳解
極角排序詳解 名詞釋義 在平面內取乙個定點o,叫極點,引一條射線ox,叫做極軸,再選定乙個長度單位和角度的正方向 通常取逆時針方向 對於平面內任何一點m,用 表示線段om的長度 有時也用r表示 表示從ox到om的角度,叫做點m的極徑,叫做點m的極角,有序數對 就叫點m的極座標 四種極角排序 詳解 s...