100. 增减序列【差分 / 思维】
本题考察的是差分的思想。
设 b[i]=a[i]-a[i-1]
因为我们要想让其所有的数字都相等。故即b[2],b[3].......b[n]
都得为0才行。
此时数组所有的数的值都是b[1]。
因为我们的差分操作是每次选两值,让其一个加1,一个减1,基于贪心的思想正负数相互结合。
剩下的即为同符号的数。
设b[2]…b[n]中正数的和为sum1,负数的和为sum2
故最少的操作次数就是max( sum1, abs(sum2) )
那么结果的种类为,其实结果的种类就是b[1]的取值有多少个,可以得出有abs(sum1)-abs(sum2)
种情况再加上b[1]不变本身的这种情况
故一共有abs(abs(sum1)-abs(sum2))+1
种.
举一个最简单的例子。假如上面的正负数结合后还有一个正数3未解决。
那么可以 b[1]不变,让3和 b[n+1]结合
可以让b[1]变1次,让2和 b[n+1]结合
可以让b[1]变2次,让1和 b[n+1]结
可以让b[1]变3次,让0和 b[n+1]结
故b[1]一共有四种结果
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long int LL;
LL a[N],b[N],n;
LL sum1,sum2;
int main(void)
{cin>>n;for(int i=1;i<=n;i++) cin>>a[i],b[i]=a[i]-a[i-1];for(int i=2;i<=n;i++)if(b[i]>=0) sum1+=b[i];else sum2+=b[i];cout<<max(sum1,abs(sum2))<<endl;cout<<abs(abs(sum1)-abs(sum2))+1<<endl;return 0;
}
100. 增减序列【差分 / 思维】相关推荐
- AcWing 100. 增减序列
题目 给定一个长度为 n 的数列 a1,a2,-,ana_1,a_2,-,a_na1,a2,-,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次 ...
- 《预训练周刊》第16期:中科院推出全球首个图文音三模态预训练模型、顶会论文探索100层序列推荐模型的加速训练...
No.16 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第16期&l ...
- CH - 0304 IncDec Sequence(差分+思维)
题目链接:点击查看 题目大意:给定一个长度为 n(n≤10^5 ) 的数列 {a_1,a_2,-,a_n},每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一.求至少需要多少次操 ...
- 【无码专区7】括号序列(思维)
因为只有std,没有自我实现,所以是无码专区 主要是为了训练思维能力 solution才是dls正解,但是因为只有潦草几句,所以大部分会有我自己基于正解上面的算法实现过程,可能选择的算法跟std中dl ...
- CodeForces - 1000C Covered Points Count(差分+思维)
题目链接:点击查看 题目大意:给出n个区间,现在要求输出覆盖次数为1,2,3....n-1,n的点分别有多少个 题目分析:一开始看到区间问题想用线段树去做,但想了想又可以直接用差分去做,不过因为数比较 ...
- AT2005-[AGC003E]Sequential operations on Sequence【差分,思维】
正题 题目链接:https://www.luogu.com.cn/problem/AT2005 题目大意 开始有一个1∼n1\sim n1∼n依次排列的序列,然后QQQ次,第iii次把序列长度变为ai ...
- matlab编写长度为100矩形序列,18春[华中师范大学]华师《Matlab基础与应用》在线作业(100分)...
试卷总分:100 得分:100 第1题,下面程序执行后array的值为( ). For k=1:10 If k6 Break; Else Array(k)=k; End end A.array= ...
- AtCoder Regular Contest 100 D - Equal Cut 思维 + 前缀和
传送门 文章目录 题意: 思路: 题意: 给你一个数组aaa,你要将其分成四份,让这四份中和的最大值−-−最小值最小,输出这个最小值. n≤2e5,ai≤1e9n\le2e5,a_i\le1e9n≤2 ...
- Codeforces Round #590 (Div. 3) E. Special Permutations 差分 + 思维
传送门 文章目录 题意: 思路: 题意: 思路: 直接考虑比较难想,这种公式题基本都是将部分答案看成一个整体,考虑xi,xi+1x_i,x_{i+1}xi,xi+1的贡献的. 假设当前的xi=x, ...
最新文章
- pygame加载MP3音乐
- 多看看 leetcode 128. 最长连续序列
- docker对aufs触发的bug
- 【ubuntu】ubuntu18.04:在处理时有错误发生:ufw E: Sub-process /usr/bin/dpkg returned an error code (1)
- Java编程中最容易踩雷的地方!
- Kafka系列2-producer和consumer报错
- 奇妙的 CSS shapes(CSS图形)
- 重学TCP协议(3) 端口号及MTU、MSS
- Openstack的RPC通信代码调用架构
- SQl---基础整理6--数据库的创建
- atitit.薄伽梵歌overview attilax 读后感
- OSPF不规则区域,远离Area 0的区域连通性解决方案
- mac PHP 环境搭建
- label标签 for属性
- 手机安装证书时候弹出输入证书密码
- ATMEGA128——初探
- 计算机3大总线名词解释,计算机名词解释-- 总线.doc
- 编程常用小技巧(持续更新~)
- 实时数据缓存管理的初步设计
- Skyscrapers (hard version)(1900/单调栈)