「XSOI-R1」凑点
题目描述
小 T 会给你一个长度为 n n n 的整数数列,你手上有一个数 x x x,初始为 0 0 0,你可以执行以下操作,使得最终 x x x 与 c c c 的差小于 1 0 − 4 10^{-4} 10−4。
你可以对 x x x 进行至多 k k k 次操作:
-
add i
,对计数器 x x x 加上 a i a_i ai,然后 a i a_i ai 不能再进行任何操作。 -
sub i
,对计数器 x x x 减上 a i a_i ai,然后 a i a_i ai 不能再进行任何操作。 -
mul i
,对计数器 x x x 乘上 a i a_i ai,然后 a i a_i ai 不能再进行任何操作。 -
sqrt i
,将 a i a_i ai 赋值为 a i \sqrt {a_i} ai,每个 a i a_i ai 只能开方一次。 -
pow f
,将计数器 x x x 变为 x f x^f xf, f f f 可以为浮点数。
所有 a i a_i ai 都必须给 x x x 进行一次加或减或乘操作。
在运算过程中, a i a_i ai 和 x x x 的值均不能超过 1 0 10 10^{10} 1010。题目保证有解,如有多种方案,输出一种即可。
本题精度要求较大,请提高算法的精度。
输入格式
第一行三个整数 n n n, k k k, c c c。
第二行 n n n 个整数,表示序列 a a a。
输出格式
第一行一个整数表示总操作数 g g g。
接下来 g g g 行为你的操作序列。
样例 #1
样例输入 #1
5 25 3
3 3 3 3 3
样例输出 #1
5
add 1
add 2
sub 3
sub 4
add 5
样例 #2
样例输入 #2
3 9 3
1 3 3
样例输出 #2
5
sqrt 2
sqrt 3
add 1
mul 2
mul 3
样例 #3
样例输入 #3
3 9 77
4 5 4
样例输出 #3
4
add 1
add 2
pow 2
sub 3
提示
【样例解释 #1】
-
x x x 加上 a 1 a_1 a1,此时 x x x 为 3 3 3。
-
x x x 加上 a 2 a_2 a2,此时 x x x 为 6 6 6。
-
x x x 减去 a 3 a_3 a3,此时 x x x 为 3 3 3。
-
x x x 减去 a 4 a_4 a4,此时 x x x 为 0 0 0。
-
x x x 加上 a 5 a_5 a5,此时 x x x 为 3 3 3。
【样例解释 #2】
-
将 a 2 a_2 a2 开根号,此时 a = [ 1 , 3 , 3 ] a=[1,\sqrt3,3] a=[1,3,3]。
-
将 a 3 a_3 a3 开根号,此时 a = [ 1 , 3 , 3 ] a=[1,\sqrt3,\sqrt3] a=[1,3,3]。
-
x x x 加上 a 1 a_1 a1,此时 x x x 为 1 1 1。
-
x x x 乘上 a 2 a_2 a2,此时 x x x 为 3 \sqrt3 3。
-
x x x 乘上 a 3 a_3 a3,此时 x x x 为 3 3 3。
【样例解释 #3】
-
x x x 加上 a 1 a_1 a1,此时 x x x 为 4 4 4。
-
x x x 加上 a 2 a_2 a2,此时 x x x 为 9 9 9。
-
将 x x x 变为 x 2 x^2 x2,此时 x x x 为 81 81 81。
-
将 x x x 减去 a 3 a_3 a3,此时 x x x 为 77 77 77。
数据规模与约定
本题采用捆绑测试。
-
subtask 0(10 pts): n ≤ 5 n\leq 5 n≤5, k = n 2 k=n^2 k=n2,保证可以使用加与减的运算得到解。
-
subtask 1(20 pts): n ≤ 5 n \leq 5 n≤5, k = n 2 k=n^2 k=n2,保证可以可以使用加、减、乘、开方运算得到解。
-
subtask 2(15 pts): n ≤ 10 n \leq 10 n≤10, a i ≤ 2 a_i \leq 2 ai≤2, k = n + 1 k=n+1 k=n+1。
-
subtask 3(55 pts): k = n + 1 k=n+1 k=n+1。
对于所有数据: 0 ≤ n ≤ 1 0 5 0 \leq n \leq 10^{5} 0≤n≤105, ∑ i = 1 n a i ≤ 1 0 10 \sum_{i=1}^{n}{a_i} \le 10^{10} ∑i=1nai≤1010, 0 ≤ c ≤ 1 0 10 0 \leq c\leq 10^{10} 0≤c≤1010。
Scratch实现
后续
接下来我会不断用scratch来实现信奥比赛中的算法题、Scratch考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容