给一个长为 \(n\) 的数组 \(a\) 和一个正整数 \(x\) 。你可以执行以下操作任意次:用两个相邻元素的和替换这两个元素。如 \([\cdots, a_i,a_{i+1},\cdots] \rightarrow [\cdots, a_i + a_{i+1},\cdots]\) 。
一个数组 \(b = [b_1, \cdots, b_k]\) 的美丽值定义为 \(\sum_{i=1}^{k} \lceil \frac{b_i}{x} \rceil\) 。
询问如何操作 \(a\) 能使 \(a\) 最后的美丽值最小和最大。输出最小值和最大值
显然 \(\lceil \frac{h}{x} \rceil + \lceil \frac{w}{x} \rceil \geq \lceil \frac{h + w}{x} \rceil\) 。
于是 \(a\) 的最小美丽值为 \(\lceil \frac{\sum_{i=1}^{n} a_i}{x} \rceil\) ,最大美丽值为 \(\sum_{i=1}^{n} \lceil \frac{a_i}{x} \rceil\) 。
view
#include <bits/stdc++.h>
void solve(){
int n, x; std::cin >> n >> x;
long long sum_big = 0, sum_small = 0;
for (int i = 1; i <= n; i++) {
int a; std::cin >> a;
sum_small += a;
sum_big += (a + x - 1) / x;
}
sum_small = (sum_small + x - 1) / x;
std::cout << sum_small << ' ' << sum_big << '\n';
}
int main() {
int _ = 1; std::cin >> _;
while (_--) {solve();}
return 0;
}
- Codeforces Partition Strange Round 694codeforces partition strange round codeforces covering strange 1470f codeforces partition artistic 1603 educational codeforces round rated codeforces round 911 div codeforces round 887 div codeforces round 864 div codeforces round 863 div codeforces round 915 div codeforces round 913 div