1540 : 攻击力进阶测试
时间限制:2 Sec 内存限制:256 MiB 提交:42 正确:24
题目描述
新打造了一把武器,准备对其进行攻击力测试,测试内容如下:
将 面墙体排成一列,编号从 ~ ,其中,第 面墙体的防御力可以量化为 ,由于墙体厚度不一,所以墙体之间的防御力可能有所差异。
站在第一面墙体前,开启武器,如果该武器每次发射攻击的攻击力为 ,那么,第一次攻击,可以穿过多少面墙体?至少需要攻击多少次,才能穿透所有的 面墙体?
为了使结果更加完善,测试将进行多轮,每一轮测试结束之后,可能会更改若干个位置上墙体的防御力,之后再进行测试。已知测试轮数以及更改墙体防御力的次数之和为 次。
攻击力以及墙体防御力变化规则如下:
假设初始攻击力为 ,第一面墙体防御力为
如果 ,那么,此次攻击可以顺利击穿第一面墙体,之后,攻击力衰减为 ,继续攻击下一面墙体;
如果 ,那么,此次攻击可以顺利击穿第一面墙体,之后,此次攻击的攻击力衰减为 ,不再具备攻击性,也就无法再对后续墙体造成威胁, 必须重新发起攻击;
如果 ,那么,此次攻击不能击穿第一面墙体,第一面墙体的防御力衰减为 , 必须重新发起攻击。
输入描述
本题为多组测试数据,第一行输入一个正整数 ,代表测试数据的组数。
对于每组测试数据,第一行输入一个正整数 ,代表墙体数量。
第二行依次输入 个正整数 ,依次代表每一面墙体的防御力。
第三行输入一个正整数 ,代表测试轮数以及更改墙体防御力的总次数。
接下去 行,每一行首先输入一个正整数 ,如果 ,说明需要修改某一面墙体的防御力,接着输入两个正整数 ,表示将下标为 的这面墙的防御力更改为 ;如果 ,说明在此前的修改基础上进行新一轮的攻击力测试,接着输入一个正整数 ,代表此轮测试, 新造的武器每一次攻击的攻击力数值。
对于墙体防御力的修改是永久性的,并不会因为某一轮测试而改变;在每一轮测试之后,所有被摧毁的墙体均复原成此轮测试前的状态(包括位置以及防御力)。
题目保证,所有测试数据的 之和不会超过 , 之和不会超过 。
输出描述
对于每一轮测试,一行输出两个整数,第一个整数代表第一次攻击可以击穿多少面墙体,第二个整数代表至少需要多少次攻击才能击穿所有的 面墙体。
样例输入
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