CF2040B.Paint a Strip
入门
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你有一个长度为 n 的数组 a1,a2,…,an,其元素全为零。
可以对该数组进行两种操作:
- 选择一个下标 i(满足 1≤i≤n 且 ai=0),将 ai 设为 1;
- 选择一对下标 l 和 r(满足 1≤l≤r≤n、al=1、ar=1 且 al+…+ar≥⌈2r−l+1⌉),将区间 [l,r] 中所有元素设为 1。
你的任务是计算,使数组中所有元素都变为 1,至少需要多少次第一种操作?
输入格式
输入包含多组测试用例。第一行是整数 t(1≤t≤104),表示测试用例的数量。接下来每个测试用例用一行表示,包含一个整数 n(1≤n≤105),表示数组的长度。
需要注意,所有测试用例中 n 的总和没有限制。
输出格式
对于每组测试用例,输出一个整数,表示完成任务所需的最少第一种操作次数。
输入输出样例
输入#1
4 1 2 4 20
输出#1
1 2 2 4
说明/提示
-
对于第一个测试用例,你可以对 i=1 操作一次即可。
-
对于第二个测试用例,可以按以下步骤操作:
- 对 i=1 进行第一种操作,数组变为 [1,0]。
- 对 i=2 进行第一种操作,数组变为 [1,1]。
第二个测试用例的操作步骤如下图所示:

-
对于第三个测试用例,可以按以下步骤操作:
- 对 i=1 进行第一种操作,数组变为 [1,0,0,0]。
- 对 i=4 进行第一种操作,数组变为 [1,0,0,1]。
- 对 l=1 和 r=4 进行第二种操作,因为 a1+a2+a3+a4=2,满足不小于 ⌈2r−l+1⌉=2,所以可以将区间内元素设为 1,数组变为 [1,1,1,1]。
第三个测试用例的操作步骤如下图所示:

本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?