CF2074F.Counting Necessary Nodes

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

四叉树是一种树形数据结构,其中每个节点最多有四个子节点,每个节点对应一个正方形区域。

形式化地说,对于所有非负整数 k,a,b≥0k, a, b \ge 0 的元组,存在且仅存在一个节点对应以下区域 ∗^{\text{∗}}:

[a⋅2k,(a+1)⋅2k]×[b⋅2k,(b+1)⋅2k][a \cdot 2^k, (a+1) \cdot 2^k] \times [b \cdot 2^k, (b+1) \cdot 2^k]

所有区域大小超过 1×11 \times 1 的节点都包含四个子节点,这些子节点对应将原区域四等分后的四个子区域;而区域为 1×11 \times 1 的节点对应树的叶节点。

图中展示了部分节点对应的区域。颜色较深的区域更接近叶节点。

Frontman 厌恶一个普遍的误解——当区域内包含 nn 个叶节点时,四叉树可以在 O(log⁡n)\mathcal{O}(\log n) 时间内完成范围查询。事实上,有时需要查询远多于 O(log⁡n)\mathcal{O}(\log n) 个区域,极端情况下时间复杂度甚至为 O(n)\mathcal{O}(n)。因此,Frontman 设计了此题来教育你关于该数据结构的最坏情况。

粉色士兵们给定了一个有限区域 [l1,r1]×[l2,r2][l_1, r_1] \times [l_2, r_2],其中 lil_i 和 rir_i(li<ril_i < r_i)为非负整数。请找出最少需要选择多少个节点,使得这些节点对应区域的并集恰好等于给定区域。这里,两个点集被认为是不同的,当且仅当存在一个点属于其中一个集合但不属于另一个。

∗^{\text{∗}} 区域是具有实数坐标的点集。点 (x,y)(x, y) 属于区域 [p,q]×[r,s][p, q] \times [r, s] 当且仅当 p≤x≤qp \le x \le q 且 r≤y≤sr \le y \le s。此处 ×\times 形式上指集合的笛卡尔积。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt(1≤t≤1041 \le t \le 10^4)。接下来是每个测试用例的描述。

每个测试用例的唯一一行包含四个整数 l1l_1、r1r_1、l2l_2、r2r_2 —— 各坐标轴的区域边界(0≤li<ri≤1060 \le l_i < r_i \le 10^6)。

输出格式

对于每个测试用例,在单独一行中输出满足条件所需的最少节点数量。

输入输出样例

  • 输入#1

    5
    0 1 1 2
    0 2 0 2
    1 3 1 3
    0 2 1 5
    9 98 244 353

    输出#1

    1
    1
    4
    5
    374

说明/提示

第一个测试用例中,给定区域为 [0,1]×[1,2][0, 1] \times [1, 2]。存在一个节点对应该区域,选择该节点即可,答案为 11。

第二个测试用例中,给定区域为 [0,2]×[0,2][0, 2] \times [0, 2]。存在一个节点对应该区域,选择该节点即可,答案为 11。

第三个测试用例中,给定区域为 [1,3]×[1,3][1, 3] \times [1, 3]。不存在对应该区域的节点。但可以通过选择以下 44 个叶节点构造出相同区域:

  • 对应 [1,2]×[1,2][1, 2] \times [1, 2] 的叶节点;
  • 对应 [1,2]×[2,3][1, 2] \times [2, 3] 的叶节点;
  • 对应 [2,3]×[1,2][2, 3] \times [1, 2] 的叶节点;
  • 对应 [2,3]×[2,3][2, 3] \times [2, 3] 的叶节点。

可以证明无法用少于 44 个节点构造出该区域,因此答案为 44。

第四个测试用例中,给定区域为 [0,2]×[1,5][0, 2] \times [1, 5]。可以通过选择以下 55 个节点构造出相同区域:

  • 对应 [0,1]×[1,2][0, 1] \times [1, 2] 的叶节点;
  • 对应 [1,2]×[1,2][1, 2] \times [1, 2] 的叶节点;
  • 对应 [0,2]×[2,4][0, 2] \times [2, 4] 的非叶节点;
  • 对应 [0,1]×[4,5][0, 1] \times [4, 5] 的叶节点;
  • 对应 [1,2]×[4,5][1, 2] \times [4, 5] 的叶节点。

可以证明无法用少于 55 个节点构造出该区域,因此答案为 55。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页