Luogu 4552 [Poetize6] IncDec Sequence
2024-09-02 14:12:45
在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 ;
}
最新文章
- 深度|作为C端应用的代表,成功的陌生社交应用是什么样子的?
- 一个crackme的分析
- PHP后台执行
- 利用iOS API编写简单微博客户端全过程
- DataProvider 传递参数
- bash shell学习-shell script基础 (笔记)
- [置顶] 学习JDK源码:可进一步优化的代码
- 简单的总结一下iOS面试中会遇到的问题
- 各种demo:css实现三角形,css大小梯形,svg使用
- OS模块文件操作一
- 【安富莱TCPnet网络教程】HTTP通信实例
- Linux最小系统移植之早期打印CONFIG_DEBUG_LL
- LOJ6436 [PKUSC2018] 神仙的游戏 【FFT】
- django的RestFramework模块的源码分析
- go语言入门(Hello World)
- k8s学习笔记之一:kubernetes简介
- golang三方包应该如何安装--在线和离线
- 02-Http请求与响应全解
- 《linux 内核全然剖析》 fork.c 代码分析笔记
- hihocoder第三十六周 二分查找
热门文章
- 剑指offer--12.不用加减乘除做加法
- mysql定时任务备份bat命令-记录一下待日后使用
- Java 利用Gson将json字符串转换为List<;Map<;String, String>;>;
- Apache Kafka:下一代分布式消息系统【转载】
- [SP16580]QTREE7
- Angular5学习笔记 - 项目目录结构(二)
- Spring Boot发布和调用RESTful web service
- 机器学习:衡量线性回归法的指标(MSE、RMSE、MAE、R Squared)
- S2-045漏洞利用工具&;解决方案
- 2016.4.6 WinForm显示PDF两种方法