読者です 読者をやめる 読者になる 読者になる

Tamflexの貯蔵庫

やる気のない備忘録

c++11で計算幾何

競プロでは平面幾何の問題が結構出題されます. c++ならば複素数を扱うcomplexを使ってもいいのだけどx,yではなくreal,imagになるのがなんとなく気持ちが悪いので自作してみました. computer geometry

arc 051

arc051.contest.atcoder.jp A問題 円の中心が長方形の内側か外側にあるかで場合分けすれば解けます. int main() { P p; double r; cin>>p.x>>p.y>>r; P q1,q2; cin>>q1.x>>q1.y>>q2.x>>q2.y; P q = (q1+q2)/2; P q3(q1.x,q2.y); P q4(q2.x,q1.y); bool red, …

abc 033

abc033.contest.atcoder.jp解説が詳しい 各点からすべての点への線分を考え角度を求める. 角度を求めた後, 鈍角と直角の数を数える. ここでミソなのはx軸のx特異点)でこれはすべての角度に2πを足して二分探索すればとける. int main() { ll n; cin >> n; ll …

aoj 0090

シールの重なり | Aizu Online Judge 二円の交点がどのくらい重なっているか数えれば良い. ついでに座標を扱うクラスを拡張した. class P { public: double x,y; P(){};P(double x,double y):x(x),y(y){}; P operator+(const P&q){P t;t.x=x+q.x;t.y=y+q.y;r…

aoj 0081

線対称の位置にある点 | Aizu Online Judge回転行列を利用してといてみた. class P { public: double x,y; P(){};P(double x,double y):x(x),y(y){}; P operator+(const P&q){P t;t.x=x+q.x;t.y=y+q.y;return t;} P operator+=(const P&q){x+=q.x;y+=q.y;ret…

aoj 0076

宝探し | Aizu Online Judge 久々の投稿 複素数を使うと以下のような漸化式になる あとはやるだけ int main() { int n; complex<double> T[1001]; T[0] = 0.0; T[1] = 1.0; FOR(i,2,1000) T[i] = complex<double>(1.,1./sqrt(i-1))*T[i-1]; while(cin >> n, n!=-1) { printf(</double></double>…

aoj 0035

凹みの検知 | Aizu Online Judge幾何の問題 対角線となる二直線の交差を確認する解法 対角線で三角形2つに分割し面積で求める開放 が等が考えられる. 今回は後者で解いてみた.でも本当はrubyのコードにあるように https://www.jaist.ac.jp/~uehara/course/20…