题目描述
给定 n 个二次函数 F={f1,f2,…,fn},其中 fi(x)=aix2+bix+ci。
如果对于所有 x∈R,都有 f(x)=g(x),那么称函数 f 和 g 互为独立。
同样地,如果集合 G={g1,g2,…,gk} 中任意一对不同的函数 gi 和 gj 都互为独立(即对于 1≤i<j≤∣G∣,都有 gi(x)=gj(x) 对任意 x∈R 成立),那么称集合 G 是有组织的。
对于每个 i=1,2,…,n,请你求出包含 fi 的最大的有组织子集的大小。
输入格式
每个测试点包含多组测试数据。第一行输入测试用例数 t(1≤t≤104)。接下来是每组测试数据。
每组数据的第一行输入一个整数 n(1≤n≤3000)。
接下来的 n 行,每行输入三个整数 ai、bi、ci,表示函数 fi(−106≤ai,bi,ci≤106,且 ai=0)。
保证每组数据中的函数两两不同。
保证所有测试用例的 n2 之和不超过 30002。
输出格式
对于每组测试数据,输出 n 个正整数 s1,s2,…,sn,其中 si 表示包含 fi 的最大的有组织子集的大小。
样例
3
4
1 2 -1
-3 0 -3
-1 4 -5
1 2 -4
5
3 0 0
1 0 -5
-3 0 0
-1 0 10
1 0 -10
5
884 -667 497
680 -973 213
23 -548 -412
826 359 -333
773 212 218
3 2 3 3
3 3 2 2 3
3 3 3 1 2
样例说明
在第一个测试用例中,函数如下:
- f1(x)=x2+2x−1;
- f2(x)=−3x2−3;
- f3(x)=−x2+4x−5;
- f4(x)=x2+2x−4。
它们的图像如下所示:

各个包含指定函数的最大有组织子集如下:
- {f1,f3,f4} 是包含 f1 的最大有组织子集;
- {f1,f2} 是包含 f2 的最大有组织子集;
- {f1,f3,f4} 是包含 f3 的最大有组织子集;
- {f1,f3,f4} 是包含 f4 的最大有组织子集。
由 ChatGPT 5 翻译
来源
Codeforces 2195F,英文题名 Parabola Independence。