1 条题解

  • 0
    @ 2024-12-12 8:11:01

    符号分配

    题意

    给定 nn 个数,构造一个包含 aa 个 '+' 和 bb 个 '-'的表达式使得计算结果最大。

    题解

    贪心的考虑,要尽可能加上大的,减去小的,而第一个数的符号永远为 '+'。那么只需要对后 n1n-1 个数排序,减去前 bb 小数的和,加上后 aa 大数的和,最后加上第一个数即为最大值。

    参考代码

    #include <bits/stdc++.h>
    
    using namespace std;
    using i64 = long long;
    
    void Solve()
    {
    	int n, a, b;
    	cin >> n >> a >> b;
    	vector<int> v(n - 1);
    	i64 x;	cin >> x;
    	for (auto& xx : v) cin >> xx;
    	sort(v.begin(), v.end());
    
    	for (int i = 0; i < b; i++) x -= v[i];
    	for (int i = b; i < n - 1; i++) x += v[i];
    	cout << x << "\n";
    } 
    int main()
    {
    	ios::sync_with_stdio(false);
    	cin.tie(nullptr);
    	
    	Solve();
    	return 0;
    }
    
    • 1

    信息

    ID
    286
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    (无)
    递交数
    62
    已通过
    20
    上传者