CH-0304 IncDec Sequence
0304 IncDec Sequence 0x00「基本算法」例题
描述
给定一个长度为 n(n≤10^5 ) 的数列 {a_1,a_2,…,a_n},每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。
求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。
输入格式
第一行一个正整数n。
接下来n行,每行一个整数,第i+1行的整数表示ai。
输出格式
第一行输出最少操作次数。
第二行输出最终能得到多少种结果。
样例输入
4
1
1
2
2
样例输出
1
2
数据范围与约定
- 对于100%的数据,n=100000,0<=ai<2147483648
来源
毕克,石家庄二中【Nescafé 22】杯NOIP模拟赛
OJ-ID:
ch-0304
author:
Caution_X
date of submission:
20191117
tags:
差分
description modelling:
给定长度为n的数组{a1,a2,......,an},每次可以选择区间[l,r]的所有元素加1或减1
问:至少需要多少次操作使得所有的数都相等,最终得到的数列可能有多少种
major steps to solve it:
(1)作差分数组b[](b[1]=a[1],b[n+1]=0)
(2)目标是使得b2,b3,.....,bn都为0,记p为b[]正数之和,q为b[]负数之和
(3)每一次对a进行的操作都相当于对b选择两个数分别进行+1和-1
(4)现在讨论b中选择地两个数bi,bj:
a)(2=<i,j<=n)
b)(i=1&&j<=n)
c)(i>=2&&j=n+1)
d)(i=1&&j=n+1)//d为无效操作,必不是最优解所进行的操作
(5)对于+1和-1操作,为了操作数最少,每次选择正数-1,负数+1,需进行操作min(p,q)
(6)当只有正数和负数时,还剩下|p-q|为配对,选择这些未配对的和b[0]或b[n+1]配对,需进行操作|p-q|,每一次操作都会得到一个新的b[0],所以最终数组个数为|p-q|+1
(7)综上:最少操作数:min(p,q)+|p-q|,最终数组种类|p-q|+1
AC code:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[],b[];
int main()
{
ll n;
scanf("%lld",&n);
for(int i=;i<=n;i++)
{
scanf("%lld",&a[i]);
}
b[]=a[];
ll s0=,s1=;
for(int i=;i<=n;i++)
{
b[i]=a[i]-a[i-];
if(b[i]>) s0+=b[i];
else s1+=b[i];
}
s0=abs(s0);
s1=abs(s1);
b[n+]=;
ll ans0=min(s0,s1)+abs(s0-s1);
ll ans1=abs(s0-s1)+;
printf("%lld\n%lld\n",ans0,ans1);
return ;
}
CH-0304 IncDec Sequence的更多相关文章
- Poetize6: IncDec Sequence
3043: IncDec Sequence Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 233 Solved: 132[Submit][Statu ...
- bzoj 3043: IncDec Sequence 模拟
3043: IncDec Sequence Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 248 Solved: 139[Submit][Statu ...
- 前缀和与差分之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],使这个区间内的数都加一或者都减一.问至少需要 ...
- BZOJ 3043: IncDec Sequence
3043: IncDec Sequence Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 578 Solved: 325[Submit][Statu ...
- 2498 IncDec Sequence
2498 IncDec Sequence 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 给 ...
- 差分:IncDec Sequence 差分数组
突然就提到了这个东西,为了不再出现和去年联赛看见二分没学二分痛拿二等第一的情况,就去学了一下,基础还是比较简单的-- 先看一个经典例题: 给定一个长度为n的数列{a1,a2...an},每次可以选择一 ...
- Luogu 4552 [Poetize6] IncDec Sequence
在BZOJ上好像被权限掉了. 考虑差分,定义差分数组$b$ $$b_i = \left\{\begin{matrix} a_i \ \ \ (i == 1)\\ a_i - a_{i - 1}\ \ ...
随机推荐
- 《Dotnet9》系列之建站-中文站最好WordPress主题,自媒体,博客,企业,商城主题一网打尽
大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员.本文介绍WordPress主题JustNews,本站Dotnet9既是使用WordPress + JustNews主题搭建而成的 ...
- 基于vue+leaflet+echart的足迹分享评论平台
(其实题目是随便取的,目的只是用来证明Vue+leaflet+springboot技术栈的可行性) 效果 小专栏不支持上传视频?想看的话可以去我的知乎看最新的文章,那个应该可以.在这里 主要功能描述 ...
- 浅析椭圆曲线加密算法(ECC)
本文首发于先知社区,原文链接:https://xz.aliyun.com/t/6295 数学基础 黎曼几何中的"平行线" 欧几里得<几何原本>中提出五条公设: 过相异两 ...
- 关于c#winform用sharpGL(OpenGL)绘制不出图形,绘制窗口是个黑框的坑
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11790309.html 在c++的opengl中可能是因为是最基本的库,很多东西都把你做好了 ...
- Nginx的安装及配置
1.概述 Nginx是开源免费的一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.其特点是占有内存少,并发能力强,使用nginx网站用户有很多,如百 ...
- Flask 教程 第十四章:Ajax
本文翻译自The Flask Mega-Tutorial Part XIV: Ajax 这是Flask Mega-Tutorial系列的第十四部分,我将使用Microsoft翻译服务和少许JavaSc ...
- springboot中使用aop技术
aop是面向切面编程的意思,它可以需要先选择一些切入点,然后对这些切入点进行拦截,注入统一的代码逻辑,这也是解耦的一种方式,也是为了避免重复的代码,让开发人员把关注点放在业务上. 引用包 'org.s ...
- How to: Implement File Data Properties 如何:实现文件数据属性
This topic demonstrates how to implement a business class with a file data property and a file colle ...
- 松软科技web教程:JavaScript Switch 语句
switch 语句用于基于不同条件执行不同动作. JavaScript Switch 语句 请使用 switch 语句来选择多个需被执行的代码块之一. 语法 switch(表达式) { case n: ...
- CSS学习笔记-过渡模块
过渡模块: 1.过渡三要素 1.1必须要有属性发生变化 1.2必须告诉系统哪个属性需要执行过渡效果 1.3必须告诉系统过渡效果持续时长 2.格式: ...