差分:IncDec Sequence 差分数组
突然就提到了这个东西,为了不再出现和去年联赛看见二分没学二分痛拿二等第一的情况,就去学了一下,基础还是比较简单的……
先看一个经典例题:
给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一。
问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。
对于100%的数据,n=100000,0<=ai<2147483648。
注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong 注意longlong
恩,查分的基础是给数列两两做差
在原数列a的基础上,b[1]=a[1],b[i]=a[i]-a[i-1]
这道题中每次给[l,r]区间同时+1,就相当于给b[l-1]+1,b[r]-1,区间-1同理
因为整个区间同时更改,所以区间内部的差不变,b在l-1和r中间的值都没有变
所以求出b中所有正数的和p,和负数绝对值的和q,让他们消掉,很容易看出来第一问答案就是max(p,q)(注意q是绝对值)
然后还会有abs(p,q)的值没有消掉,这abs(p,q)的值可以自己消(长度为1的区间更改),也可以和b1消(中间的值不会变,b1左边没数无所谓)
所以第二问答案就是abs(p,q)+1
希望联赛不要搞出什么魔性的应用来qaq
代码:
//3_108_120_116
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
long long read(){long long z=,mark=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')mark=-; ch=getchar();}
while(ch>=''&&ch<=''){z=(z<<)+(z<<)+ch-''; ch=getchar();}
return z*mark;
}
inline long long abs(long long x,long long y){return (x>y)?x-y:y-x;}
long long n,a[];
long long b[];
long long p=,q=;
int main(){//freopen("ddd.in","r",stdin);
cin>>n;
for(int i=;i<=n;i++) a[i]=read();
b[]=a[];
for(int i=;i<=n;i++){
b[i]=a[i]-a[i-];
if(b[i]>) p+=b[i];
else q+=b[i];
}
cout<<max(p,-q)<<endl<<abs(p,-q)+<<endl;
return ;
}
差分:IncDec Sequence 差分数组的更多相关文章
- 【bzoj3043】IncDec Sequence 差分
题目描述 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下 ...
- BZOJ 3043: IncDec Sequence 差分 + 思维
Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) ...
- 【BZOJ 3043】 3043: IncDec Sequence (差分)
3043: IncDec Sequence Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 589 Solved: 332 Description 给 ...
- [bzoj3043]IncDec Sequence_差分
IncDec Sequence 题目大意:给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一 ...
- 前缀和与差分之IncDec sequence
参考链接:https://blog.csdn.net/hzk_cpp/article/details/80407014 题目链接:https://www.acwing.com/problem/cont ...
- CH-0304 IncDec Sequence
0304 IncDec Sequence 0x00「基本算法」例题 描述 给定一个长度为 n(n≤10^5 ) 的数列 {a_1,a_2,…,a_n},每次可以选择一个区间 [l,r],使下标在这个区 ...
- Poetize6: IncDec Sequence
3043: IncDec Sequence Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 233 Solved: 132[Submit][Statu ...
- 【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 ...
随机推荐
- selenium+python+eclipse开发中遇到的问题
1.中文编码问题 报错提示:SyntaxError: Non-ASCII character '\xba' in file D:\autotest\PythonCase\src\selenium\te ...
- [DNS][转]EDNS
随着业务的复杂化和多样化,RFC1035中定义的DNS消息格式和它支持的消息内容已经不足以满足一些DNS服务器的需求,于是,RFC2671 中提出了一种扩展DNS机制EDNS(Extension Me ...
- x.1
最近公司人事变动略频 昨日老板召集众骨干动员,谈心,表示有信心,没资金压力. 今日各种谈心,唉…… 人事姐姐约逻辑组长聊,美术主管就找上了我,一通倾述.内容实事求是,但是行业内各公司都这样,唉,还想着 ...
- JavaScript测试工具比较: QUnit, Jasmine, and Mocha
1. QUnit A JavaScript Unit Testing framework. QUnit is a powerful, easy-to-use JavaScript unit testi ...
- X3850M2安装CertOS 7 KVM 2--VNC
需要安装远程桌面,否则无鼠标的日子比较难. VNC的安装需要步骤较多,重点参考以下文章: http://www.itzgeek.com/how-tos/linux/centos-how-tos/con ...
- 在linux使用make编译ArduPilot for Pixhawk/PX4 ArduPilot 编译环境搭建
Building ArduPilot for Pixhawk/PX4 on Linux with Make 使用Make编译 ArduPilot for Pixhawk 2, Pixhawk and ...
- C语言程序设计第七次作业
一.学习内容 本次课学习了函数的基本知识,需要大家对如下知识点进行总结: 1. 函数定义的基本格式,函数定义和函数原型(声明)的区别何在? 2. 函数的调用方式有哪几种 ...
- js zTree的用法
代码如下: <script type="text/javascript"> var reginTree = { setting: { view ...
- 对Ajax的理解
一.Ajax的工作原理: 1. Ajax的机制是:完成异步请求,实现页面的局部刷新. 2. 发送异步请求:通过xmlhttprequest方法. 3. 浏览器向服务器发送异步请求: 服务器接收处理请求 ...
- 关于Python中的文件操作(转)
总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...