Codeforces 1108E2 Array and Segments (Hard version)(差分+思维)
题目链接:Array and Segments (Hard version)
题意:给定一个长度为n的序列,m个区间,从m个区间内选择一些区间内的数都减一,使得整个序列的最大值减最小值最大。
题解:利用差分的思想,并且考虑到m比较小,遍历一遍序列,当前点遇到需要改变的时候进行操作,同时更新答案。
- #include <set>
- #include <map>
- #include <queue>
- #include <deque>
- #include <stack>
- #include <cmath>
- #include <cstdio>
- #include <vector>
- #include <string>
- #include <cstring>
- #include <fstream>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- #define eps 1e-8
- #define pb push_back
- #define PI acos(-1.0)
- #define INF 0x3f3f3f3f
- #define clr(a,b) memset(a,b,sizeof(a)
- #define bugc(_) cerr << (#_) << " = " << (_) << endl
- #define FAST_IO ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
- const int N=1e5+;
- typedef long long ll;
- typedef unsigned long long ull;
- int a[N],l[N],r[N];
- vector <int> sub[N],add[N];
- int main(){
- int mxt=-INF,mit=INF;
- int n,m,ans=-INF,ansid=,cnt=;
- scanf("%d%d",&n,&m);
- for(int i=;i<=n;i++){
- scanf("%d",&a[i]);
- mit=min(mit,a[i]);mxt=max(mxt,a[i]);
- }
- ans=mxt-mit;
- for(int i=;i<=m;i++){
- scanf("%d%d",&l[i],&r[i]);
- sub[l[i]].push_back(i);
- add[r[i]+].push_back(i);
- }
- for(int i=;i<=n;i++){
- for(int j=;j<sub[i].size();j++){
- int id=sub[i][j];
- for(int k=l[id];k<=r[id];k++) a[k]--;
- }
- for(int j=;j<add[i].size();j++){
- int id=add[i][j];
- for(int k=l[id];k<=r[id];k++) a[k]++;
- }
- if(sub[i].size()||add[i].size()){
- int mi=INF,mx=-INF;
- for(int j=;j<=n;j++) mi=min(mi,a[j]),mx=max(mx,a[j]);
- if(ans<mx-mi){
- ans=mx-mi;
- ansid=i;
- }
- }
- }
- printf("%d\n",ans);
- for(int i=;i<=m;i++){
- if(l[i]<=ansid&&r[i]>=ansid) cnt++;
- }
- printf("%d\n",cnt);
- for(int i=;i<=m;i++){
- if(l[i]<=ansid&&r[i]>=ansid) printf("%d ",i);
- }
- return ;
- }
Codeforces 1108E2 Array and Segments (Hard version)(差分+思维)的更多相关文章
- Codeforces 1108E2 Array and Segments (Hard version) 差分, 暴力
Codeforces 1108E2 E2. Array and Segments (Hard version) Description: The only difference between eas ...
- codeforces#1108E2. Array and Segments (线段树+扫描线)
题目链接: http://codeforces.com/contest/1108/problem/E2 题意: 给出$n$个数和$m$个操作 每个操作是下标为$l$到$r$的数减一 选出某些操作,使$ ...
- Codeforces Round #535 (Div. 3) E2. Array and Segments (Hard version) 【区间更新 线段树】
传送门:http://codeforces.com/contest/1108/problem/E2 E2. Array and Segments (Hard version) time limit p ...
- Array and Segments (Easy version) CodeForces - 1108E1 (暴力枚举)
The only difference between easy and hard versions is a number of elements in the array. You are giv ...
- 【Codeforces 1108E1】Array and Segments (Easy version)
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 枚举最大值和最小值在什么地方. 显然,只要包含最小值的区间,都让他减少. 因为就算那个区间包含最大值,也无所谓,因为不会让答案变小. 但是那些 ...
- E1. Array and Segments (Easy version)(暴力) && E2. Array and Segments (Hard version)(线段树维护)
题目链接: E1:http://codeforces.com/contest/1108/problem/E1 E2:http://codeforces.com/contest/1108/problem ...
- CF E2 - Array and Segments (Hard version) (线段树)
题意给定一个长度为n的序列,和m个区间.对一个区间的操作是:对整个区间的数-1可以选择任意个区间(可以为0个.每个区间最多被选择一次)进行操作后,要求最大化的序列极差(极差即最大值 - 最小值).ea ...
- Codeforces 1108E (Array and Segments) 线段树
题意:给你一个长度为n的序列和m组区间操作,每组区间操作可以把区间[l, r]中的数字都-1,请选择一些操作(可以都不选),使得序列的最大值和最小值的差值尽量的大. 思路:容易发现如果最大值和最小值都 ...
- CF1108E2 Array and Segments (Hard version)
线段树 对于$Easy$ $version$可以枚举极大值和极小值的位置,然后判断即可 但对于$Hard$ $version$明显暴力同时枚举极大值和极小值会超时 那么,考虑只枚举极小值 对于数轴上每 ...
随机推荐
- 浅谈C#中的for循环与foreach循环
for循环和foreach循环其实可以算得上是从属关系的,即foreach循环是可以转化成for循环,但是for循环不一定能转换成foreach循环. 下面简单介绍一下两种循环: 1.for循环 代码 ...
- Windows环境下使用pip install安装lxml库
lxml是Python语言和XML以及HTML工作的功能最丰富和最容易使用的库.lxml是为libxml2和libxslt库的一个Python化的绑定.它与众不同的地方是它兼顾了这些库的速度和功能完整 ...
- Spring注解AOP及单元测试junit(6)
2019-03-10/20:19:56 演示:将xml配置方式改为注解方式 静态以及动态代理推荐博客:https://blog.csdn.net/javazejian/article/details/ ...
- U813.0操作员功能权限和数据权限的设置
操作员的权限有功能权限.数据权限.金额权限. 1. 给操作员设置功能权限,操作员才能进入系统进行相关业务操作. Admin用户登录无法修改账套,但可以新建.引入.输出.Demo用户每次只能进入一个账套 ...
- Play vue.js with constant value in SailsJS
SailsJS supplies a utility module called parasails, which defines two elements, <ajax-form> an ...
- djangorestframework+vue-cli+axios,为axios添加token作为headers踩坑记
情况是这样的,项目用的restful规范,后端用的django+djangorestframework,前端用的vue-cli框架+webpack,前端与后端交互用的axios,然后再用户登录之后,a ...
- AI 学习路线
[导读] 本文由知名开源平台,AI技术平台以及领域专家:Datawhale,ApacheCN,AI有道和黄海广博士联合整理贡献,内容涵盖AI入门基础知识.数据分析挖掘.机器学习.深度学习.强化学习.前 ...
- 隐写术之steghide的使用
steghide不是一个软件,所以下载之后解压缩就可以在命令行中使用. win+R,cmd,回车->进入到steghide.exe所在的文件夹,使用隐藏或者解锁的相应命令,即可隐藏或者解锁. 这 ...
- 2013年山东省赛F题 Mountain Subsequences
2013年山东省赛F题 Mountain Subsequences先说n^2做法,从第1个,(假设当前是第i个)到第i-1个位置上哪些比第i位的小,那也就意味着a[i]可以接在它后面,f1[i]表示从 ...
- 关于SSH的那些事
SSH: Secure Shell Protocol (安全外壳协议) Secure Shell,又可记为安全外壳协议(SSH) Secure Shell,又可记为安全外壳协议(SSH),最初是UN ...