1540 : 攻击力进阶测试

时间限制:2 Sec 内存限制:256 MiB 提交:42 正确:24

提交 状态 论坛

题目描述

StarrySky 新打造了一把武器,准备对其进行攻击力测试,测试内容如下:


将  面墙体排成一列,编号从  ~ ,其中,第  面墙体的防御力可以量化为 ,由于墙体厚度不一,所以墙体之间的防御力可能有所差异。
StarrySky 站在第一面墙体前,开启武器,如果该武器每次发射攻击的攻击力为 ,那么,第一次攻击,可以穿过多少面墙体?至少需要攻击多少次,才能穿透所有的  面墙体?

为了使结果更加完善,测试将进行多轮,每一轮测试结束之后,可能会更改若干个位置上墙体的防御力,之后再进行测试。已知测试轮数以及更改墙体防御力的次数之和为  次。

攻击力以及墙体防御力变化规则如下:

假设初始攻击力为 ,第一面墙体防御力为 
如果 ,那么,此次攻击可以顺利击穿第一面墙体,之后,攻击力衰减为 ,继续攻击下一面墙体;
如果 ,那么,此次攻击可以顺利击穿第一面墙体,之后,此次攻击的攻击力衰减为 ,不再具备攻击性,也就无法再对后续墙体造成威胁,StarrySky 必须重新发起攻击;
如果 ,那么,此次攻击不能击穿第一面墙体,第一面墙体的防御力衰减为 StarrySky 必须重新发起攻击。

输入描述

本题为多组测试数据,第一行输入一个正整数 ,代表测试数据的组数。


对于每组测试数据,第一行输入一个正整数 ,代表墙体数量。
第二行依次输入  个正整数 ,依次代表每一面墙体的防御力。
第三行输入一个正整数 ,代表测试轮数以及更改墙体防御力的总次数。
接下去  行,每一行首先输入一个正整数 ,如果 ,说明需要修改某一面墙体的防御力,接着输入两个正整数 ,表示将下标为  的这面墙的防御力更改为 ;如果 ,说明在此前的修改基础上进行新一轮的攻击力测试,接着输入一个正整数 ,代表此轮测试,StarrySky 新造的武器每一次攻击的攻击力数值。
对于墙体防御力的修改是永久性的,并不会因为某一轮测试而改变;在每一轮测试之后,所有被摧毁的墙体均复原成此轮测试前的状态(包括位置以及防御力)。

题目保证,所有测试数据的  之和不会超过  之和不会超过 

输出描述

对于每一轮测试,一行输出两个整数,第一个整数代表第一次攻击可以击穿多少面墙体,第二个整数代表至少需要多少次攻击才能击穿所有的  面墙体。

样例输入

2
3
6 3 1
1
2 3
6
6 2 4 3 1 2
5
2 6
2 9
1 2 4
1 4 1
2 9

样例输出

0 4
1 3
2 2
1 2

提示

2022校赛

来源

day5