#lg14984. [USACO26JAN1] Lineup Counting Queries P

[USACO26JAN1] Lineup Counting Queries P

[AdditionalFile5596.zip](file://AdditionalFile5596.zip?type=additional_file)

#5596. 「USACO 2026 First Platinum」Lineup Counting Queries

标签: 传统 | 时间限制: 2000 ms | 内存限制: 256 MiB |

题目描述

题目译自 USACO 2026 First Contest, Platinum Problem 2. Lineup Counting Queries

最初(即时刻 t=0t=0),有一排奶牛,仅包含位于位置 00 的奶牛 00(在此,若一头奶牛前面有 kk 头奶牛,则称其位于位置 kk)。对于 t=1,2,3,t=1,2,3,\dots 的每个时刻 tt,位于位置 00 的奶牛移动到位置 t/2\lfloor t/2\rfloor,位于位置 1t/21\dots \lfloor t/2\rfloor 的每头奶牛向前移动一个位置,而奶牛 tt 加入队伍末尾(位置 tt)。

回答 QQ (1Q105)(1\le Q\le 10^5) 个独立的询问,每个询问的形式如下:

在时刻 tt 结束后,编号为 l1r1l_1\dots r_1 的奶牛中,有多少头位于位置 l2r2l_2\dots r_2?$(0\le l_1\le r_1\le t, 0\le l_2\le r_2 \le t, t\le 10^{18})$

输入格式

第一行包含 QQ,即询问的数量。

接下来的 QQ 行每行包含五个整数,指定一个形式为 l1r1l2r2tl_1\,r_1\,l_2\,r_2\,t 的询问。

输出格式

对每个询问,在单独的一行中输出答案。

样例 1

输入

1
0 1000000000000000000 0 1000000000000000000 1000000000000000000

输出

1000000000000000001

不同时刻的队伍排列:

t = 0 | 0
t = 1 | 0 1
t = 2 | 1 0 2
t = 3 | 0 1 2 3
t = 4 | 1 2 0 3 4
t = 5 | 2 0 1 3 4 5
t = 6 | 0 1 3 2 4 5 6
t = 7 | 1 3 2 0 4 5 6 7
t = 8 | 3 2 0 4 1 5 6 7 8
t = 9 | 2 0 4 1 3 5 6 7 8 9

t=9t=9 时,奶牛从前到后的顺序是 [2,0,4,1,3,5,6,7,8,9][2,0,4,1,3,5,6,7,8,9]

对于第三个询问,位于位置 353\dots 5 的奶牛是 [1,3,5][1,3,5],其中只有一头属于编号范围 454\dots 5

样例 2

输入

4
0 9 0 9 9
3 5 4 5 9
4 5 3 5 9
1 1 3 3 9

输出

10
2
1
1

数据范围与提示

  • 测试点 3:N10N\le 10
  • 测试点 4-7:对于所有询问,满足 l1=r1l_1 = r_1
  • 测试点 8-14:对于所有询问,满足 r12l1r_1 \leq 2 \cdot l_1
  • 测试点 15-21:无额外约束

供题:Agastya Goel 和 Benjamin Qi