存个模板:
是用分治写的时间复杂度 nlogn
但是本题好像还有一种玄学做题法:
我们充分发扬人类智慧:
将所有点全部绕原点旋转同一个角度,然后按x坐标排序
根据数学直觉,在随机旋转后,答案中的两个点在数组中肯定不会离得太远
所以我们只取每个点向后的5个点来计算答案
这样速度快得飞起,在n=1000000时都可以在1s内卡过。。。
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#include<map>
#include<vector>
#define ll long long
#define llu unsigned ll
using namespace std;
const int maxn=200100;
const double eps=1e-8;
const double dnf=1e20;
struct Point
{
double x,y;
void input(void)
{
scanf