传送门
题意:
思路:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
double l[100010];
map<double,int> vis;
int e[100010];
const double pi = acos(-1);
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
for(int i = 1; i <= n; i++)
{
int xa,xb,ya,yb;
scanf("%d%d%d%d",&xa,&ya,&xb,&yb);
l[i] = xa == xb ? pi : (yb-ya)*1.0/(xb-xa)*1.0;
vis[l[i]]++;
}
int cnt = 0;
for(int i = 1; i <= n; i++)
{
vis[l[i]] > 0 ? e[++cnt] = vis[l[i]],vis[l[i]] = 0 : vis[l[i]] = 0;
}
sort(e+1,e+1+cnt);
int now = 1,k = 1,flag = 1;
for(int i = 1; i <= n; i++)
{
e[now]--;
flag = e[now] == 0 ? now+1: flag;
printf("%d\n",i-k);
now == cnt ? now = flag,k++ : now++;
}
}
}