[题解]P4552 [Poetize6] IncDec Sequence
P4552 [Poetize6] IncDec Sequence
我们对\(a\)做差分,得到数组\(b\)。\(a\)的区间修改,等价于选定\(i,j\in[1,n+1]\),令\(b[i]\leftarrow (b[i]+1),b[j]\leftarrow (b[j]-1)\),我们的目标是让\(b[2\sim n]\)全为\(0\)。
记\(x,y\)分别表示\(b[2\sim n]\)中正数之和、负数的绝对值之和。显然最优操作需要我们尽可能先让\(b\)中的正负数互相配对消除,共\(\min(x,y)\)次;最后只剩下正数或负数,再依次选择每一个“\(1\)”和\(b[1]\)还是\(b[n+1]\)进行配对,共\(|x-y|\)次。
\(x,y\)中的最大值决定了操作的最少次数,于是第\(1\)问的答案就是\(\max(x,y)\)。
第\(2\)问实质就是最后\(b[1]\)可能有多少取值,就是最后剩下的正数/负数之和\(|x-y|\)中,选择多少和\(b[1]\)配对,可以取\(k\in[0,|x-y|]\)个,于是第\(2\)问答案就是\(|x-y|+1\)。
区间问题有时候转成差分来考虑会很轻松。
点击查看代码
#include<bits/stdc++.h>
#define int long long
#define N 100010
using namespace std;
int n,a[N],b[N],x,y;
signed main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=2;i<=n;i++){
b[i]=a[i]-a[i-1];
if(b[i]>0) x+=b[i];
else y-=b[i];
}
cout<<max(x,y)<<"\n"<<abs(x-y)+1<<"\n";
return 0;
}
[题解]P4552 [Poetize6] IncDec Sequence的更多相关文章
- 洛谷 P4552 [Poetize6] IncDec Sequence【差分+脑洞】
一看区间操作,很容易想到差分 所以就是先差分,然后为了保证最小步数,把政府差分抵消,也就相当于原数组区间加减 第二问,因为差分数组抵消之后不为0就需要使用n+1的虚拟位置,而这个的值其实没有,所以我们 ...
- P4552 [Poetize6] IncDec Sequence
Link 题目描述 给定一个长度为 \(n\) 的数列 \({a_1,a_2,\cdots,a_n}\),每次可以选择一个区间 \([l,r]\),使这个区间内的数都加 \(1\) 或者都减 \(1\ ...
- Poetize6: IncDec Sequence
3043: IncDec Sequence Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 233 Solved: 132[Submit][Statu ...
- 【洛谷P4552】IncDec Sequence
题目大意:给定一个长度为 N 的序列,现可以进行若干次区间 +1 或区间 -1 操作,求使得序列所有的值均相同的最小操作数是多少,且最终得到的序列有多少种. 题解: 首先考虑执行区间+和区间-操作,可 ...
- BZOJ 3043 [Poetize6] IncDec Sequence
题目描述 给定一个长度为n的数列$a_1,a_2,--,a_n$,每次可以选择一个区间[l,r],使这个区间内的数都加1或者都减1. 请问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最 ...
- 解题:Poetize6 IncDec Sequence
题面 差分原数列得到差分数组$dif$,这样对于$dif[2]->dif[n]$会多出来两个“空位置”$1$和$n+1$.然后区间加减就变成了使一个位置$+1$,另一个位置$-1$(可以对“空位 ...
- Luogu 4552 [Poetize6] IncDec Sequence
在BZOJ上好像被权限掉了. 考虑差分,定义差分数组$b$ $$b_i = \left\{\begin{matrix} a_i \ \ \ (i == 1)\\ a_i - a_{i - 1}\ \ ...
- 前缀和与差分之IncDec sequence
参考链接:https://blog.csdn.net/hzk_cpp/article/details/80407014 题目链接:https://www.acwing.com/problem/cont ...
- 【BZOJ 3043】 3043: IncDec Sequence (差分)
3043: IncDec Sequence Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 589 Solved: 332 Description 给 ...
- 【BZOJ3043】IncDec Sequence 乱搞
[BZOJ3043]IncDec Sequence Description 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要 ...
随机推荐
- Predixy的docker化
概述 当前已有一套redis cluster的集群,但是fs中的hiredis只能配置单实例redis. AI了一下方案,可以使用redis的proxy组件来实现从hiredis到redis clus ...
- IntelliJ IDEA 2023.1 破解教程mac,windows,linux均适用/JetBrains产品全版本激活
前言 该激活方式不限于IDEA,同样也适用于JetBrains 全家桶的所有工具, 包括 IntelliJ IDEA.Pycharm.WebStorm.PhpStorm.AppCode.Datagri ...
- 【2020.11.25提高组模拟】太空漫步(walking) 题解
[2020.11.25提高组模拟]太空漫步(walking) 题解 题目描述 Do not go gentle into that good night. Old age should burn an ...
- Lecture 1 NN,KNN
INT305 Machine Learning Lecture 1 Outline of this course ·Suprevised Learning Nearest Neighbors 近邻 D ...
- Just:告别 Makefile 的现代命令行任务运行器
本文推荐的一个轻量级命令行工具--Just,它提供了一种简单高效的方式来管理项目任务,类似于传统的 Make 工具,但具有更简洁的语法和更现代化的功能. 我目前在一些小项目中开始使用它来管理一些日常的 ...
- SQL Server查找未提交事务
USE master GO SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SELECT es.session_id, es.login_name, ...
- ET框架运行(Mac环境)--客户端
1:环境 Mac电脑,安装.net cor2 2.2 ,JetBrains Rider编辑器,Unity环境(2018.4.28f1) 终端运行: dotnet --version 查看是否安装n ...
- Codeforces Round #674 (Div. 3) ABCD 题解
A. Floor Number 题意:一开始的数为2,问加多少次x才能加到超过n. 思路:水题,循环一遍就行. view code #include<iostream> #include& ...
- linux 安装 svn
简介 RT 参考链接 请参阅下面的链接 https://idroot.us/install-apache-subversion-ubuntu-20-04/ ---- 下面的复制以防万一访问失效 引用步 ...
- 【备】C#四舍五入常识备份
/// <summary> /// 真正的四舍五入 /// </summary> /// <param name=&quo ...