[ARC189B] Minimize Sum 题解

场上被创死了。

思路#

考虑一次操作会造成什么影响。

加入操作的是:

x1,x2,x3,x4

它们会变成:

x1,x1+x4x3,x1+x4x2,x4

发现没有什么规律。

考虑它们的差分序列:

x1,x4x3,x3x2,x2x1

改变为交换 2,4 的差分。

那么修改就变成很简单的形式了。

奇偶分别排序即可。

Code#

#include <bits/stdc++.h>
using namespace std;

#define int long long

int n;
int a[200010];

signed main() {
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = n; i >= 1; i--) a[i] = a[i] - a[i - 1];
  vector<int> ji;
  vector<int> ou;
  for (int i = 2; i <= n; i++) {
    if (i % 2 == 1) ji.push_back(a[i]);
    if (i % 2 == 0) ou.push_back(a[i]);
  }
  sort(ji.begin(), ji.end());
  sort(ou.begin(), ou.end());;
  int ns = a[1] * n;
  for (int i = 0; i < ji.size(); i++) {
    ns += (n - 2 * i - 2) * ji[i];
  }
  for (int i = 0; i < ou.size(); i++) {
    ns += (n - 2 * i - 1) * ou[i];
  }
  cout << ns << "\n";
}

作者:JiaY19

出处:https://www.cnblogs.com/JiaY19/p/18595356

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   JiaY19  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示