在BZOJ上好像被权限掉了。

考虑差分,定义差分数组$b$    

  $$b_i = \left\{\begin{matrix}
  a_i \ \ \ (i == 1)\\   
  a_i - a_{i - 1}\ \ \ (i > 1)
  \end{matrix}\right.$$

那么我们最后就是要使 $\forall i \in [2, n]\ \ b_i == 0$,并不关心$b_1$的取值。

差分之后区间修改变成了$+1$和$-1$的单点修改,如果要用最少的次数完成修改,那么肯定先要对所有$b_i > 0$的进行$-1$的操作,而$b_i < 0$得进行$+1$的操作,发现正负数可以两两配对,设$b_i$ $i \in [2, n]$中所有正数的和为$p$,所有负数的绝对值和为$q$,那么有$min(p, q)$次可以配对修改,还有$\left | p - q \right |$需要拎出来单独修改,那么第一问的答案就是$min(p, q) + \left | p - q \right | = max(p, q)$。

而第二问相当于求有多少个$b_1$,易得答案为$\left | p - q \right | + 1$。

时间复杂度$O(n)$。

注意开$long \ long$。

Code:

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll; const int N = 1e5 + ; int n;
ll a[N], b[N], sumP = , sumN = ; template <typename T>
inline void read(T &X) {
X = ; char ch = ; T op = ;
for(; ch > ''|| ch < ''; ch = getchar())
if(ch == '-') op = -;
for(; ch >= '' && ch <= ''; ch = getchar())
X = (X << ) + (X << ) + ch - ;
X *= op;
} template <typename T>
inline T max(T x, T y) {
return x > y ? x : y;
} template <typename T>
inline T abs(T x) {
return x > ? x : -x;
} int main() {
read(n);
for(int i = ; i <= n; i++) {
read(a[i]);
b[i] = a[i] - a[i - ];
if(i == ) continue;
if(b[i] < ) sumN -= b[i];
if(b[i] > ) sumP += b[i];
} printf("%lld\n%lld\n", max(sumN, sumP), abs(sumP - sumN) + 1LL);
return ;
}

最新文章

  1. 深度|作为C端应用的代表,成功的陌生社交应用是什么样子的?
  2. 一个crackme的分析
  3. PHP后台执行
  4. 利用iOS API编写简单微博客户端全过程
  5. DataProvider 传递参数
  6. bash shell学习-shell script基础 (笔记)
  7. [置顶] 学习JDK源码:可进一步优化的代码
  8. 简单的总结一下iOS面试中会遇到的问题
  9. 各种demo:css实现三角形,css大小梯形,svg使用
  10. OS模块文件操作一
  11. 【安富莱TCPnet网络教程】HTTP通信实例
  12. Linux最小系统移植之早期打印CONFIG_DEBUG_LL
  13. LOJ6436 [PKUSC2018] 神仙的游戏 【FFT】
  14. django的RestFramework模块的源码分析
  15. go语言入门(Hello World)
  16. k8s学习笔记之一:kubernetes简介
  17. golang三方包应该如何安装--在线和离线
  18. 02-Http请求与响应全解
  19. 《linux 内核全然剖析》 fork.c 代码分析笔记
  20. hihocoder第三十六周 二分查找

热门文章

  1. 剑指offer--12.不用加减乘除做加法
  2. mysql定时任务备份bat命令-记录一下待日后使用
  3. Java 利用Gson将json字符串转换为List&lt;Map&lt;String, String&gt;&gt;
  4. Apache Kafka:下一代分布式消息系统【转载】
  5. [SP16580]QTREE7
  6. Angular5学习笔记 - 项目目录结构(二)
  7. Spring Boot发布和调用RESTful web service
  8. 机器学习:衡量线性回归法的指标(MSE、RMSE、MAE、R Squared)
  9. S2-045漏洞利用工具&amp;解决方案
  10. 2016.4.6 WinForm显示PDF两种方法