今天这波大号+49分,感觉还行,另吐槽一波predictor越来越不准了。
A.Benches
原有$n$张长凳,第$i$张长凳上坐着$a_i$个人,现在又来了$m$个人,问长凳所需容量的最大值和最小值
显然,这个数据量直接暴力一波就最稳了。
Code:
1 |
|
B.Vitamin
商店有$n$种饮料,每种饮料的价格为$c_i$,含有A、B、C中任意种维生素,Petya需要ABC三种维生素,问达到要求的最小花费or不存在方案。
简单dp,分别以1b、10b、100b代表A、B、C,将每种饮料的维生素种类状态压缩,于是可得状态转移方程:$dp[i + 1][j | status[i + 1]] = dp[i][j] + c[i], 1 \leq i < n$。最终答案为dp[n][7]。
Code:
1 |
|
C.Array Product
给定一个有$n$个元素的序列,可以无限次将序列中某两个元素合并替换为他们的乘积,只有一次机会删去某一个元素。需要使序列最终剩下的一个元素最大,输出操作方案。
Solution:
1、按小到大顺序使负数两两合并。
2、将剩下的非正数两两合并。
3、此时应只剩下一个非正数or没有, 若有则将它删去。
4、合并所有正数。
(注: 显然,这题中只有负数的大小是有用的,可以将正数用1代替。 )
Code:
1 |
|
D.Petya and Array
给定一个有$n$个元素的数列和一个整数$t$, 求: $\sum_{l = 1}^{n} \sum_{r = l}^{n} [(\sum_{i = l}^{r} a_i) < t]$
即求$\sum_{i = 1}^{n} \sum_{j = i}^{n} [prefix_i + t > prefix_j]$, 先离散化前缀和,然后树状数组维护一下就好。
Code:
1 |
|