CF2006D.Iris and Adjacent Products

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

Iris 刚刚在数学课上学会了乘法。然而,由于她的大脑无法承受过于复杂的计算,她不能将两个乘积大于 kk 的整数相乘,否则她的大脑可能会爆炸!

她的老师每天都会布置一道难题作为暑假作业。现在给定一个包含 nn 个元素的数组 aa,她需要计算每两个相邻元素的乘积(即 a1⋅a2a_1 \cdot a_2、a2⋅a3a_2 \cdot a_3,以此类推)。Iris 希望她的大脑能够安全工作,为此她希望修改数组 aa,使得对于每个 1≤i<n1 \leq i < n,都有 ai⋅ai+1≤ka_i \cdot a_{i+1} \leq k。她可以进行以下两种操作:

  1. 她可以以任意方式重新排列数组 aa 的元素。
  2. 她可以选择数组 aa 的任意一个元素,并将其更改为 11 到 kk 之间的任意整数。

Iris 希望最小化她使用第 2 种操作的次数。

然而,这还不是暑假的全部!暑假持续 qq 天,在第 ii 天,Iris 需要完成子数组 bli,bli+1,…,brib_{l_i}, b_{l_i+1}, \ldots, b_{r_i} 的数学作业。请帮助 Iris,告诉她每一天最少需要进行多少次第 2 种操作。注意,每一天的操作是独立的,即数组 bb 不会被改变。

输入格式

每组测试数据包含多个测试用例。第一行包含一个整数 tt(1≤t≤5⋅1041 \leq t \leq 5 \cdot 10^4)——表示测试用例的数量。每组测试用例的描述如下:

每个测试用例的第一行包含三个整数 nn、qq 和 kk(2≤n≤1052 \leq n \leq 10^5,1≤q≤1051 \leq q \leq 10^5,1≤k≤1061 \leq k \leq 10^6)——数组 bb 的长度、天数以及乘法计算的上限。

每个测试用例的第二行包含 nn 个整数 b1,b2,…,bnb_1, b_2, \ldots, b_n(1≤bi≤k1 \leq b_i \leq k)——数组 bb 的元素。

接下来 qq 行,每行包含两个整数 lil_i 和 rir_i(1≤li<ri≤n1 \leq l_i < r_i \leq n)——第 ii 天作业的子数组区间。

保证所有测试用例中 nn 的总和不超过 10510^5,qq 的总和不超过 10510^5。

输出格式

对于每组测试用例,输出一行包含 qq 个整数,表示每一天最少需要进行多少次第 2 种操作。

输入输出样例

  • 输入#1

    5
    3 1 1
    1 1 1
    1 3
    3 2 10
    1 10 9
    1 3
    2 3
    5 4 2
    2 2 2 2 2
    1 2
    2 4
    2 5
    1 5
    6 5 10
    3 2 5 10 10 1
    1 4
    3 6
    1 6
    2 5
    5 6
    10 10 10
    10 9 8 7 6 5 4 3 2 1
    1 10
    1 9
    1 8
    1 7
    2 10
    3 10
    4 10
    5 10
    3 9
    6 8

    输出#1

    0 
    0 1 
    1 1 2 2 
    1 1 1 1 0 
    3 3 4 3 2 2 1 1 2 1

说明/提示

在第一个测试用例中,由于 Iris 总可以将 11 和 11 相乘,所以不需要任何操作,因此答案为 00。

在第二个测试用例中,第一天的作业是 [1,10,9][1, 10, 9]。Iris 可以将其重新排列为 [9,1,10][9, 1, 10],因此不需要进行任何第 2 种操作。第二天的作业是 [10,9][10, 9],她可以将其中一个元素改为 11,得到 [1,9][1, 9],因此需要进行一次第 2 种操作。

由 ChatGPT 4.1 翻译

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

首页