#CF2195F. Parabola Independence

    ID: 7031 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划图论贪心数学排序CodeforcesCodeforces Round 1080(Div3)Div3FCF2195F2000

Parabola Independence

题目描述

给定 nn 个二次函数 F={f1,f2,,fn}F=\{f_1, f_2, \ldots, f_n\},其中 fi(x)=aix2+bix+cif_i(x) = a_i x^2 + b_i x + c_i

如果对于所有 xRx \in \mathbb{R},都有 f(x)g(x)f(x) \neq g(x),那么称函数 ffgg 互为独立。

同样地,如果集合 G={g1,g2,,gk}G=\{g_1, g_2, \ldots, g_k\} 中任意一对不同的函数 gig_igjg_j 都互为独立(即对于 1i<jG1 \le i < j \le |G|,都有 gi(x)gj(x)g_i(x) \neq g_j(x) 对任意 xRx \in \mathbb{R} 成立),那么称集合 GG 是有组织的。

对于每个 i=1,2,,ni=1,2,\ldots,n,请你求出包含 fif_i 的最大的有组织子集的大小。

输入格式

每个测试点包含多组测试数据。第一行输入测试用例数 tt1t1041 \le t \le 10^4)。接下来是每组测试数据。

每组数据的第一行输入一个整数 nn1n30001 \le n \le 3000)。

接下来的 nn 行,每行输入三个整数 aia_ibib_icic_i,表示函数 fif_i106ai,bi,ci106-10^6 \le a_i, b_i, c_i \le 10^6,且 ai0a_i \neq 0)。

保证每组数据中的函数两两不同。

保证所有测试用例的 n2n^2 之和不超过 300023000^2

输出格式

对于每组测试数据,输出 nn 个正整数 s1,s2,,sns_1, s_2, \ldots, s_n,其中 sis_i 表示包含 fif_i 的最大的有组织子集的大小。

样例

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+2x1f_1(x)=x^2+2x-1
  • f2(x)=3x23f_2(x)=-3x^2-3
  • f3(x)=x2+4x5f_3(x)=-x^2+4x-5
  • f4(x)=x2+2x4f_4(x)=x^2+2x-4

它们的图像如下所示:

各个包含指定函数的最大有组织子集如下:

  • {f1,f3,f4}\{f_1, f_3, f_4\} 是包含 f1f_1 的最大有组织子集;
  • {f1,f2}\{f_1, f_2\} 是包含 f2f_2 的最大有组织子集;
  • {f1,f3,f4}\{f_1, f_3, f_4\} 是包含 f3f_3 的最大有组织子集;
  • {f1,f3,f4}\{f_1, f_3, f_4\} 是包含 f4f_4 的最大有组织子集。

由 ChatGPT 5 翻译

来源

Codeforces 2195F,英文题名 Parabola Independence。