首先先钦定\(a\le b\),否则交换一下就行。
方法1:二分答案。
容易发现,答案至少为\(a\),并且用左下角为一个顶点一定不会更劣,并且另外两个点一定都在线段上(否则可以调整)。我们就枚举另外两个的一个,就可以得到另一个点的坐标:用勾股定理求出长度,再用atan算出倾斜角,另一个线段的倾斜角就是\(120-atan(L/mid)\),可以得到坐标,如果在矩形内则合法。
方法2:O(1)求解
我们可以把第一个的倾斜角直接设出来\(\theta\),则有一个的坐标是\((A,A tan\theta)\),另一个的坐标我们可以求解出来,而点在矩形里的条件,就是y坐标>=0,x坐标<=B,据此我们可以解出一个关于\(tan\theta\)的不等式组,我们需要\(\theta\)越大越好,这样就可以O(1)求出答案。
具体结论推导也很容易但是latex不太好打,直接放图吧:
Submission:
二分:https://atcoder.jp/contests/abc292/submissions/39551499