CF2152D.Division Versus Addition
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
对于一个长度为 m 的数组 b=[b1,b2,…,bm](bi≥2),考虑由 Poby 和 Rekkles 进行的如下二人游戏:
- 两位玩家轮流行动,Poby 先手。
- 在 Poby 的回合,他必须选择一个 x≥2 的元素,将其替换为 ⌊2x⌋。也就是说,他选择 i(1≤i≤m)且 bi≥2,然后执行 bi:=⌊2bi⌋。
- 在 Rekkles 的回合,他必须选择数组 b 中的一个 x≥2,并将其替换为 x+1。也就是说,他选择 i(1≤i≤m)且 bi≥2,然后执行 bi:=bi+1。
当且仅当数组 b 中所有元素都为 1 时,游戏结束。
定义游戏的分数为 Poby 所做的操作次数。Poby 的目标是最小化分数,而 Rekkles 的目标是最大化分数。
对于数组 b,其值定义为在双方都采取最优策略时,此游戏的分数。
现在给定一个长度为 n 的整数数组 a(ai≥2)。
需要回答 q 个独立的查询。每个查询给定一个范围 1≤l≤r≤n,你需要求出数组 [al,al+1,…,ar] 的值。
输入格式
每个测试点包含多组测试数据。第一行包含一个整数 t(1≤t≤104),表示测试数据组数。每组数据描述如下:
每组测试数据的第一行包含两个整数 n 和 q(1≤n,q≤250000),分别表示数组 a 的长度和查询的个数。
第二行包含 n 个整数 a1,a2,…,an(2≤ai≤109),表示数组 a 的元素。
接下来的 q 行,每行包含两个整数 lj 和 rj(1≤lj≤rj≤n),分别表示第 j 个查询的子数组范围。
保证所有测试数据中 n 的总和不超过 250000。
保证所有测试数据中 q 的总和不超过 250000。
输出格式
对于每个测试数据,请输出 q 行答案。对于每个查询,输出一个整数,表示对应子数组的值。
输入输出样例
输入#1
2 5 5 4 3 2 5 6 1 1 1 2 2 4 3 5 1 5 10 1 314 159 265 358 979 323 846 264 338 327 1 10
输出#1
2 3 5 6 10 91
说明/提示
第一组数据,第一个查询(1 1)的解释如下:
子数组为 [4]。
- Poby: 4→⌊24⌋=2。数组变为 [2]。
- Rekkles: 2→3。数组变为 [3]。
- Poby: 3→⌊23⌋=1。数组变为 [1],游戏结束。
可以证明,这种策略对双方都是最优的。因此,数组 [4] 的值为 2。
第一组数据,第二个查询(1 2)的解释如下:
子数组为 [4,3]。
- Poby: 3→⌊23⌋=1。数组变为 [4,1]。
- Rekkles: 4→5。数组变为 [5,1]。
- Poby: 5→⌊25⌋=2。数组变为 [2,1]。
- Rekkles: 2→3。数组变为 [3,1]。
- Poby: 3→⌊23⌋=1。数组变为 [1,1],游戏结束。
可以证明,这种策略对双方都是最优的。因此,数组 [4,3] 的值为 3。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?