Google Code Jam 2020 Round1B目隠しブルズアイ

まとめ

この質問はインタラクティブな質問です。私は通常、あまり書きませんし、デバッグの経験もあまりありません。GYMについての話は少し少なくなりました。最初は正確な方法をすぐに思いつきましたが、急いで書くことはしませんでした。案の定、Test Set3の方法はすぐに思いつきましたが、思いつきましたが、1時間以上調整できませんでした。終点が調整された後、定数が初期化を忘れ、3番目のポイントはまだREですが、幸い、悪いポイントのために次のラウンドに進んでいます。

タイトル

一つの\(2E9 * 2E9 \) 円、円、点整数中心を中心とする円の半径平面\(R&LTは、\)の整数であり、\(10 ^ 9/2 \当量R \当量^ 9 10 \)毎回点を尋ねることができ、アンケートはその点が円の中心か円上かを返します。円の中心を決定するには、最大300の問い合わせを使用します。

問題解決のアイデア

テストセット1

\(S = \ {<i、j>、i、j \ in [-5、5] \} \)を思い出してください。円の中心は\(S \)属している必要があり、列挙で十分です。

テストセット2および3

まず、円内の点を見つけると、4つの二分法でこの点と同じ線または同じ列の境界点を見つけることができます。つまり、円の2つの「文字列」を見つけます。ここの「文字列」は数学的な文字列ではありませんが、同様の特性を持っています。たとえば、2つの「文字列」を使用して円の中心を決定できます。

円内の点が\((x、y)\)で、ピアの境界点が\((x、y_1)\)\((x、y_2)\)であり、同じ列の境界点が\((x_1、 y)\)\((x_2、y)\)、そして円の中心は\((\ frac {x_1 + x_2} {2}、\ frac {y_1 + y_2} {2})\)です。

これで、円内の点を見つけるという問題を解決するだけで済みます。2つの方法があります。1つは、ランダムにポイントを直接取得する方法です。ポイントが円内に入る確率は\(\ frac {\ pi} {16} \)であり、ランダムなポイントの数が多すぎないことが簡単にわかります。\(D = 10 ^ 9/4 \)の間隔での検索もあり\((i * D、j * D)、i、j \ in \ left [-3、3 \右] \)少なくとも1つの点が円内にあります。

したがって、問題は解決されます。

おすすめ

転載: www.cnblogs.com/zengzk/p/12735539.html