首页 > 其他分享 >AcWing 100. IncDec序列

AcWing 100. IncDec序列

时间:2022-10-25 11:37:57浏览次数:82  
标签:f1 int 队首 元素 序列 操作 100 IncDec AcWing


题目链接:​​传送门​

将序列转化成差分数列
那么题目就变成了对一个数组可进行三种操作
对两个元素一个加一一个减一对一个元素加一对一个元素减一
其实后面两种操作实质是对一个元素和队首或队尾进行操作
求最少的操作数使数组所有元素变成,贪心即可
累计所有正数和,累计所有负数和
抵消掉一部分,处理剩下的
就是最小的操作数
最终的序列有
因为还剩下的种操作是对队尾或队首的操作
队尾或队首就会影响这个数列的值,所以最多加那么多次,最少一种

#include <bits/stdc++.h>

using namespace std;
int n, a[100010]; long long f1, f2;

int main(int argc, char const *argv[]) {
cin >> n;
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
for (int i = 2; i <= n; i++) {int x = a[i] - a[i - 1]; x > 0 ? f1 += x : f2 -= x;}
cout << min(f1, f2) + abs(f1 - f2) << endl << abs(f1 - f2) + 1 << endl;
}


标签:f1,int,队首,元素,序列,操作,100,IncDec,AcWing
From: https://blog.51cto.com/lyle/5794323

相关文章

  • LOJ #10005. 「一本通 1.1 练习 1」数列极差
    题目链接:​​传送门​​贪心题才是难的按照从小到大的顺序排,这样相乘会得到最大值,因为后面的最大值乘的更多最小值同理,就是从大到小处理就可以但是注意在操作的过程中不......
  • AcWing 297. 赤壁之战
    题目链接:很容易想到一个dp:表示长度为,以结尾的上升子序列的个数转移的话就是从到枚举一个表示长度,再从到枚举一个,再从到枚举一个转移就是如果,表示可以接在后面,那么复杂度,......
  • AcWing 296. 清理班次2
    题目链接:​​传送门​​洛谷上的​​P4644[USACO05DEC]CleaningShifts​​​之前没发题解太高兴了数据结构优化dp的例题表示处理到处的最小花费拿一个线段树维护最小值......
  • AcWing 281. 硬币
    题目链接:​​传送门​​只是询问一个可行性那么二进制拆分加一个bitset就行了#include<bits/stdc++.h>#defineusingnamespacestd;typedeflonglongll;intn,m,a[A],......
  • BZOJ 1001([BeiJing2006]狼抓兔子-最大流转对偶图最短路)
    1001:[BeiJing2006]狼抓兔子TimeLimit: 15Sec  MemoryLimit: 162MBSubmit: 5779  Solved: 1297​​Submit​​][​​Status​​][​​Discuss​​]D......
  • BZOJ 1007(水平可见直线-斜率排序+栈贪心)
    1007:[HNOI2008]水平可见直线TimeLimit: 1Sec  MemoryLimit: 162MBSubmit: 1830  Solved: 656[​​Submit​​][​​Status​​][​​Discuss​​]......
  • zbx_tcp_listen() fatal error:unable to serve on any address [[-]:10070]
    Zabbix服务器未启动侦听器失败:zbx_tcp_listen()致命错误:无法在任何地址上提供服务[[-]:10070]日志错误:服务状态以及尝试启动时:进程正在运行:但是服务仍然停止: ......
  • CAD文件过大,使用它。100M变2M。
    先在命令栏输入   (dictremove(namedobjdict)"ACAD_DGNLINESTYLECOMP")  包含括号一起 然后输入PU进行清理。   ......
  • day34 1005
    1005. K次取反后最大化的数组和classSolution{publicintlargestSumAfterKNegations(int[]nums,intk){Arrays.sort(nums);inti=0;......
  • 输入1-100之间的奇数。
    一.第一种方法1.for和if的配合                  for(表达式1;表达式2;表达式3)#include<stdio.h>int main(){int a=1;  //初始......