CF2074F.Counting Necessary Nodes
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
四叉树是一种树形数据结构,其中每个节点最多有四个子节点,每个节点对应一个正方形区域。
形式化地说,对于所有非负整数 k,a,b≥0 的元组,存在且仅存在一个节点对应以下区域 ∗:
[a⋅2k,(a+1)⋅2k]×[b⋅2k,(b+1)⋅2k]
所有区域大小超过 1×1 的节点都包含四个子节点,这些子节点对应将原区域四等分后的四个子区域;而区域为 1×1 的节点对应树的叶节点。

图中展示了部分节点对应的区域。颜色较深的区域更接近叶节点。
Frontman 厌恶一个普遍的误解——当区域内包含 n 个叶节点时,四叉树可以在 O(logn) 时间内完成范围查询。事实上,有时需要查询远多于 O(logn) 个区域,极端情况下时间复杂度甚至为 O(n)。因此,Frontman 设计了此题来教育你关于该数据结构的最坏情况。
粉色士兵们给定了一个有限区域 [l1,r1]×[l2,r2],其中 li 和 ri(li<ri)为非负整数。请找出最少需要选择多少个节点,使得这些节点对应区域的并集恰好等于给定区域。这里,两个点集被认为是不同的,当且仅当存在一个点属于其中一个集合但不属于另一个。
∗ 区域是具有实数坐标的点集。点 (x,y) 属于区域 [p,q]×[r,s] 当且仅当 p≤x≤q 且 r≤y≤s。此处 × 形式上指集合的笛卡尔积。
输入格式
每个测试包含多个测试用例。第一行包含测试用例的数量 t(1≤t≤104)。接下来是每个测试用例的描述。
每个测试用例的唯一一行包含四个整数 l1、r1、l2、r2 —— 各坐标轴的区域边界(0≤li<ri≤106)。
输出格式
对于每个测试用例,在单独一行中输出满足条件所需的最少节点数量。
输入输出样例
输入#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]。存在一个节点对应该区域,选择该节点即可,答案为 1。
第二个测试用例中,给定区域为 [0,2]×[0,2]。存在一个节点对应该区域,选择该节点即可,答案为 1。
第三个测试用例中,给定区域为 [1,3]×[1,3]。不存在对应该区域的节点。但可以通过选择以下 4 个叶节点构造出相同区域:
- 对应 [1,2]×[1,2] 的叶节点;
- 对应 [1,2]×[2,3] 的叶节点;
- 对应 [2,3]×[1,2] 的叶节点;
- 对应 [2,3]×[2,3] 的叶节点。
可以证明无法用少于 4 个节点构造出该区域,因此答案为 4。
第四个测试用例中,给定区域为 [0,2]×[1,5]。可以通过选择以下 5 个节点构造出相同区域:
- 对应 [0,1]×[1,2] 的叶节点;
- 对应 [1,2]×[1,2] 的叶节点;
- 对应 [0,2]×[2,4] 的非叶节点;
- 对应 [0,1]×[4,5] 的叶节点;
- 对应 [1,2]×[4,5] 的叶节点。
可以证明无法用少于 5 个节点构造出该区域,因此答案为 5。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?