题解 guP4552 IncDec Sequence
这道题是一道差分的题目
差分数组p即p[i]=a[i]-a[i-1]
如果我们把一个区间[l,r]里的数+1,那么我们不难发现p[l]'=a[l]+1-a[l-1]=p[l]+1,p[r+1]'=a[r+1]-(a[r]+1)=p[r+1]-1
即一次将两个p[i]+1 or -1
还有一种情况可以使p[l]+1 or -1
---------------差分数组介绍完毕-------------------------
首先我们看第一小问:输出最少操作次数使所有数相等,即令p[i]==0(i!=1)
我们可以根据之前得到的结论推广:
若 p[2]1,p[3]-2,那么我们最少需要两次操作;
若 p[2]1,p[3]-2,p[4]==4,那么我们最少需要五次操作;
若 p[2]1,p[3]-2,p[4]4,p[5]-2,那么我们最少需要五次操作;
......
不难看出,若把原p数组中正数之和表示为a,负数绝对值之和表示为b,那么我们最少需要max(a,b)次操作。
再看第二小题。
题目可以理解为:在一问的条件下,p[1]的值有多少种情况?
无需赘述,我们可以发现,当我们min(a,b)次操作后,数组p中定然只会剩下p[1]与一些同号的数。对于之后的|a-b|次操作,我们可以选择让p[1]变动或不变,这样一来p[1]的值就会有1+max(a,b)种可能的值。
完结撒花qwq~
代码:
#include<bits/stdc++.h>
using namespace std;
long long n,a[101000],p[101000],z,f,ans;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
p[i]=a[i]-a[i-1];
}
for(int i=2;i<=n;i++)
{
if(p[i]>0)
z+=p[i];
else
f-=p[i];
}
long long ans=abs(z-f),an=max(z,f);
cout<<an<<"\n"<<1+ans;
return 0;
}
题解 guP4552 IncDec Sequence的更多相关文章
- Poetize6: IncDec Sequence
3043: IncDec Sequence Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 233 Solved: 132[Submit][Statu ...
- 前缀和与差分之IncDec sequence
参考链接:https://blog.csdn.net/hzk_cpp/article/details/80407014 题目链接:https://www.acwing.com/problem/cont ...
- 【BZOJ3043】IncDec Sequence 乱搞
[BZOJ3043]IncDec Sequence Description 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要 ...
- 2498 IncDec Sequence
2498 IncDec Sequence 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 给 ...
- bzoj 3043: IncDec Sequence 模拟
3043: IncDec Sequence Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 248 Solved: 139[Submit][Statu ...
- 【BZOJ 3043】 3043: IncDec Sequence (差分)
3043: IncDec Sequence Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 589 Solved: 332 Description 给 ...
- BZOJ 3043: IncDec Sequence
3043: IncDec Sequence Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 578 Solved: 325[Submit][Statu ...
- CH-0304 IncDec Sequence
0304 IncDec Sequence 0x00「基本算法」例题 描述 给定一个长度为 n(n≤10^5 ) 的数列 {a_1,a_2,…,a_n},每次可以选择一个区间 [l,r],使下标在这个区 ...
- bzoj3043 IncDec Sequence
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3043 [题解] 比较神奇的一道题,开始没往差分的角度上想,所以没想出来. 考虑查分数组,有$ ...
随机推荐
- 实用程序包utils - 基于Rollup打包输出各模块文件(二)
上一次,我们讲到了如何去搭建一个前端工具库的工程,那么今天我们来聊一聊如何去将其打包输出. 需求 事情是这个样子的.我有一个这样的需求,或者是我发现有这么一个需求.就是有时候吧,我也不想搞的那么复杂, ...
- Vue全家桶之组件化开发
Vue全家桶之组件化开发 一.组件 组件 (Component) 是 Vue.js 最强大的功能之一 组件可以扩展 HTML 元素,封装可重用的代码 二. 组件注册 2.1 全局注册 Vue. ...
- TVM如何训练TinyML
TVM如何训练TinyML 机器学习研究人员和从业人员对"裸机"(低功耗,通常没有操作系统)设备产生了广泛的兴趣.尽管专家已经有可能在某些裸机设备上运行某些模型,但是为各种设备优化 ...
- PyTorch神经网络集成技术
PyTorch神经网络集成技术 create_python_neuropod 将任意python代码打包为一个neurood包. create_python_neuropod( neuropod_pa ...
- TensorRT PoolingLayer
TensorRT PoolingLayer IPoolingLayer在通道中实现池.支持的池类型有maximum.average和maximum average混合. Layer Descripti ...
- VB 老旧版本维护系列---尴尬的webapi访问返回json对象
尴尬的webapi访问返回json对象 首先Imports Newtonsoft.Json Imports MSXML2(Interop.MSXML2.dll) Dim URLEncode As Sy ...
- 【题解】数颜色 STL vector数组
小 C 的兔子不是雪白的,而是五彩缤纷的. 题目 题目描述 小 C 的兔子不是雪白的,而是五彩缤纷的.每只兔子都有一种颜色,不同的兔子可能有 相同的颜色.小 C 把她标号从 1 到 n 的 n只兔子排 ...
- SprignBoot是如何访问工程目录下的静态资源?
目录 1.牛刀小试 1.1 图片静态资源的访问 1.2 为静态资源添加访问前缀 1.3 WelCome Page 的奇妙跳转 2.那么,SpringBoot是如何做到的呢? 1. ...
- AS打包签名
1.进入项目,然后点击菜单栏的Build -->Generate Signed APK... (如下图所示) 2.点击之后会出现下图,我这个是我以前有过KEY了,如果你以前没有过的话,都是空 ...
- ASW 工作流最佳实践(二):使用 ASW 并发调用函数
在音视频转码.ETL 作业处理.基因数据处理等诸多场景中,我们都可以通过工作流并行调用云函数,将任务进行并行处理,大大提高任务处理的吞吐量,满足应用场景的高实时性.高并发能力. 在<使用 ASW ...