突然就提到了这个东西,为了不再出现和去年联赛看见二分没学二分痛拿二等第一的情况,就去学了一下,基础还是比较简单的……

先看一个经典例题:

给定一个长度为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 差分数组的更多相关文章

  1. 【bzoj3043】IncDec Sequence 差分

    题目描述 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下 ...

  2. BZOJ 3043: IncDec Sequence 差分 + 思维

    Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) ...

  3. 【BZOJ 3043】 3043: IncDec Sequence (差分)

    3043: IncDec Sequence Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 589  Solved: 332 Description 给 ...

  4. [bzoj3043]IncDec Sequence_差分

    IncDec Sequence 题目大意:给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一 ...

  5. 前缀和与差分之IncDec sequence

    参考链接:https://blog.csdn.net/hzk_cpp/article/details/80407014 题目链接:https://www.acwing.com/problem/cont ...

  6. CH-0304 IncDec Sequence

    0304 IncDec Sequence 0x00「基本算法」例题 描述 给定一个长度为 n(n≤10^5 ) 的数列 {a_1,a_2,…,a_n},每次可以选择一个区间 [l,r],使下标在这个区 ...

  7. Poetize6: IncDec Sequence

    3043: IncDec Sequence Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 233  Solved: 132[Submit][Statu ...

  8. 【BZOJ3043】IncDec Sequence 乱搞

    [BZOJ3043]IncDec Sequence Description 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要 ...

  9. BZOJ 3043: IncDec Sequence

    3043: IncDec Sequence Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 578  Solved: 325[Submit][Statu ...

随机推荐

  1. 看的oracle数据库视频 记的一点笔记

    3个默认的用户    sys          //网络管理员  权限由上到下降低 [最后加上 as sysdba]    system  //本地管理员    scott     //普通用户  默 ...

  2. C++ 之 新式转型操作符

    四种新式转型: const_cast.dynamic_cast.reinterpret_cast.static_cast!! 1.const_cast  :  去除常量性 2.dynamic_cast ...

  3. multipath tcp experiment

    git clone https://github.com/Neohapsis/mptcp-abuse.git sudo apt-get install python-pip sudo pip inst ...

  4. 堆糖瀑布流完整解决方案(jQuery)

    2010年堆糖创办以来,网站界面经历过3-5次重大改版,logo也曾更换过两次,早期蓝红相间三个圈的logo恐怕很少有人记得了.与此同时,前端 js 框架也在默默的更新换代.最早堆糖上线时,js 采用 ...

  5. 破解Outlook数据文件密码/PST访问密码

    不少人会经常用outlook,邮件多的时候可能不定期导出一个PST文件,为安全起见,给PST文件设置访问密码,可是时间长了,难免忘记,怎么办呢?不用担心,你自己就可以解决,无论是Outlook97.O ...

  6. PCB Layout高速电路设计小知识点

    1.单位:1mil = 0.0254mm 2.default线宽及线距(综合考虑高速电路性能及PCB板厂制程能力):6mil 3.差分走线特征阻抗:100ohm 4.3W原则,即线间距采用3倍线宽,多 ...

  7. Errore Http 404.2

    问题一:IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理 404.2就一个http status code, 在msdn上说:404.2 - ISAPI or CGI rest ...

  8. OC calendar 实践中的那些坑

    博客已经迁移到www.chjsun.top 最近想做一个万年历似的东西,因为需要把农历也添加进去,就想直接调用苹果自带的api,这样还方便一些, 搜索了一下,苹果对于时间的处理,还是提供了很多选择给我 ...

  9. MVC 使用 Webuploader 插件 传递额外参数 备忘笔记

    // 实例化 uploader = WebUploader.create({ pick: { id: '#filePicker-2', label: '点击选择图片' }, formData: { k ...

  10. [转]sed命令详解

    转载:http://blog.chinaunix.net/u/22677/showart_1076318.html   1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保 ...