首页 > 其他分享 >[ARC189B] Minimize Sum 题解

[ARC189B] Minimize Sum 题解

时间:2024-12-09 16:32:14浏览次数:3  
标签:Minimize 题解 Sum long int vector

场上被创死了。

思路

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

加入操作的是:

\[x_1,x_2,x_3,x_4 \]

它们会变成:

\[x_1,x_1+x_4-x_3,x_1+x_4-x_2,x_4 \]

发现没有什么规律。

考虑它们的差分序列:

\[x_1,x_4-x_3,x_3-x_2,x_2-x_1 \]

改变为交换 \(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";
}

标签:Minimize,题解,Sum,long,int,vector
From: https://www.cnblogs.com/JiaY19/p/18595356

相关文章

  • 题解:P11266 【模板】完全体·堆
    题目链接洛谷P11266【模板】完全体·堆解题思路看了题解区,竟然没有人写可爱的左偏树。我们需要支持四种操作:删除集合中的元素。取集合中的最小值。合并两个集合。修改集合中的元素。那么我们可以用常数极小的左偏树(可并堆)来解决这道模板题。对于左偏树的基础操作......
  • HECTF网络安全挑战赛个人题解,主Reverse部分
    ReverseezAndroid比较难的一个题。java层用rc4解出一张图片知道flag的格式so层注册了d0func和stringFromJNI两个函数其中d0func给两个全局变量赋了值,还有两个小函数也对这两个变量进行了操作,交叉引用全部找出来即可解密得到1vxyzmissonD1key和go1denG08aTJYcxk在stringFro......
  • 基于验证链(Chain of Verification)的大语言模型幻觉问题解决方案
    LLM(SEALONG:LLM(LargeLanguageModel)在长上下文推理任务中的自我改进)在生成内容时往往会遭遇一个棘手的问题——幻觉(Hallucination)。模型自信地输出虚假或误导性信息,对依赖其准确输出的开发者、工程师及用户构成了实质性的挑战。为解决这一问题,研究者提出了ChainofVerificat......
  • 牛客周赛 Round 71 题解
    牛客周赛Round71题解A构造A+B容易想出最多有\(n-1\)种构造方法,所以只要判断\(n\)和\(k\)的关系即可。#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn,k;cin>>n>>k;if(k<=n-1){cout<<"YES\n";......
  • [题解](更新中)AtCoder Beginner Contest 383(ABC383) A~E
    A-Humidifier1照题意模拟即可,时间复杂度\(O(n)\)。点击查看代码#include<bits/stdc++.h>#defineintlonglong#defineN110usingnamespacestd;intn,t[N],v[N],sum;signedmain(){ cin>>n; for(inti=1;i<=n;i++)cin>>t[i]>>v[i]; for(inti=1......
  • CF1540B Tree Array 题解
    CF1540BTreeArray题解首先题目的时间复杂度一定是一个\(O(n^3)\)状物。一定会有一个\(n\)来枚举根节点,那么一个根内要\(O(n^2)\)地解决问题。考虑整个序列的期望是困难的,转而考虑每个点对\((x,y)\)的期望。注意到\((x,y)\)具有父子关系时,它的贡献是确定为\(0/1\)......
  • 【题解】P5787 二分图 /【模板】线段树分治
    二分图最简单的方法是染色法实现,但是扩展域并查集也可以实现,有两个集合\(S,T\),具体的是相连边的两个点\(x,y\)总是在不同的两个集合中,若出现在同一集合中即不是一个二分图。对于时间段建边考虑用线段树储存,线段树按照时间轴划分,将将对应时间区间的节点储存上当前连边操作,小时......
  • P9951 [USACO20FEB] Swapity Swap B 题解
    题目传送门思路注意到\(1\leK\le10^9\),暴力显然会超时。将每次操作后的数列输出出来,发现会在一定次数的翻转后,重新回到初始数列。\(1\leN\le100\),循环节一定不会太长,所以暴力处理循环节长度即可。代码#include<bits/stdc++.h>usingnamespacestd;intn,lo,k,l1,l2,r......
  • 2024icpc上海E题题解及感想
    2024icpc上海E题题解​ 在这场icpc区域赛之前,我们队已经打了icpc南京和ccpc重庆,分别拿了银牌和铜牌。这场其实是非常希望可以拿金牌的,但是E题最后还是没能做出来,所以还是拿了一块银牌。​ 不过赛后拿到补题链接后用赛时思路写了一遍,发现赛时的思路假了。​ 但是后来转念一想,为......
  • [CF576E] Painting Edges 题解
    模版题的升级了。使用二分图经典判定方法(一个点拆成两个点\(x,x+n\),连边\((x,y)\)就是连接\((x,y+n),(x+n,y)\),那么是否是二分图就等价于判断\(x,x+n\)是否都不在一个集合内),预处理出每个操作的\(e_i\)下一次出现的位置\(nx_i\),每一次修改边相当于给\((i,nx_i)\)这个区......