牛客ACM赛 C 区区区间间间
链接 C 区区区间间间
- 给定长度为\(n\)序列,求$$\sum_{i=1}^{n} \sum_{j=i}^{n} max-min$$
- 其中\(max\),\(min\)为区间最大,最小值,\(n\leq 10^5\)。
- \(cdq\)分治模板题,每次考虑跨过\(mid\)的区间。
- 如果考虑从\(mid\)到\(le\)枚举左端点,那么区间之间的最大最小值是单调的。
- 在右边维护\(j,k\),表示当前最大、最小值能管辖到的最大范围。
- 那么贡献就是\(mid\)到\(j,k\)的长度和当前\(mn,mx\)的乘积,以及后面所有最大最小值的总和。
- 对\(mid\)到\(r\)前缀和优化即可。
#include<bits/stdc++.h>
#define R register int
#define ll long long
using namespace std;
const int N=100001;
ll n,t,w[N],Sm[N],Sx[N];ll ans;
int gi(){
R x=0,k=1;char c=getchar();
while((c<'0'||c>'9')&&c!='-')c=getchar();
if(c=='-')k=-1,c=getchar();
while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'0',c=getchar();
return x*k;
}
void CDQ(R le,R ri){
if(le==ri)return;
R mid=(le+ri)>>1;CDQ(le,mid),CDQ(mid+1,ri);
Sm[mid]=Sx[mid]=0;
for(ll i=mid+1,mx=0,mn=1e9;i<=ri;++i){
mx=max(mx,w[i]),mn=min(mn,w[i]);
Sm[i]=Sm[i-1]+mn,Sx[i]=Sx[i-1]+mx;
}
for(ll i=mid,j=mid,k=mid,mx=0,mn=1e9;i>=le;--i){
mx=max(mx,w[i]),mn=min(mn,w[i]);
for(;j<ri&&w[j]>=mn&&w[j+1]>=mn;++j);
for(;k<ri&&w[k]<=mx&&w[k+1]<=mx;++k);
ans-=1ll*mn*(j-mid)+(Sm[ri]-Sm[j]);
ans+=1ll*mx*(k-mid)+(Sx[ri]-Sx[k]);
}
}
void sol(){
n=gi(),ans=0;
for(R i=1;i<=n;++i)w[i]=gi();
CDQ(1,n),printf("%lld\n",ans);
}
int main(){
t=gi();
while(t--)sol();
return 0;
}
牛客ACM赛 C 区区区间间间的更多相关文章
- NowCoder--牛可乐发红包脱单ACM赛C_区区区间间间
题目链接:C_区区区间间间 思路:算贡献,求出每个数为当前最大值时所在的区间个数,和每个数为最小值的区间个数 和这个题有点类似 搭配食用效果更佳 点击这里 #include<bits/stdc+ ...
- 牛客训练赛25-A-最长区间
https://www.nowcoder.com/acm/contest/158#question 这题问最长的严格连续递增序列的最长长度是多少? 最开始感觉这道题不可做,因为有1e5个点,还有1e5 ...
- 牛客ACM赛 B [小a的旅行计划 ]
链接 B 小a的旅行计划 把\(n\)个数中选任意数分成\(a,b\)两个集合,集合无区别,要求不包含且有交,求方案数.\(n\leq 10^{13}\) 首先讨论\(a,b\)并集是否为全集: 若是 ...
- 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?
牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...
- 牛客网小白月赛5I区间(差分数组)
链接:https://www.nowcoder.com/acm/contest/135/I来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 牛客小白月赛5 I - 区间
看到一份不错的操作..... 链接:https://www.nowcoder.com/acm/contest/135/I 来源:牛客网 Apojacsleam喜欢数组. 他现在有一个n个元素的数组a, ...
- 牛客小白赛5 无关(relationship) 容斥原理(计算因子数的模板)
链接:https://www.nowcoder.com/acm/contest/135/A来源:牛客网 若一个集合A内所有的元素都不是正整数N的因数,则称N与集合A无关. 给出一个含有k个元素的集 ...
- 牛客巅峰赛S2第6场题解
牛客编程巅峰赛S2第6场 A-StringⅡ 题目 题目描述 给出一个仅包含小写字母的字符串s,你最多可以操作k次,使得任意一个小写字母变为与其相邻的小写字母(ASCII码差值的绝对值为1),请你求出 ...
- 牛客小白赛1 F题三视图
链接:https://www.nowcoder.com/acm/contest/85/F来源:牛客网 题目描述 Etéreo 拿出家里的许多的立方体积木,堆成了一个三维空间中的模型.既然你高考选了技术 ...
随机推荐
- 论文keywords和规则匹配的baseline
详细的思路可以参照小论文树立0317 关键词分为以下几类: t/****一些通用的过滤词,这些通用的过滤词可以使用和节目一起出现的词语,结合tf-idf看出来么?*****/ public st ...
- postgresql源码编译安装(centos)
centos6.8安装postgresql-9.6.8 一.环境 centos6.8 postgresql-9.6.8 二.准备工作 虚拟机可以连接外网 三.先安装make,gcc,gcc-c++,r ...
- loadrunner常用函数整理
1.int web_reg_save_param("参数名","LB=左边界","RB=右边界",LAST); //注册函数,在参数值出 ...
- 《HTML5 与 CSS3 基础教程(第 8 版)》
第 1 章 网页的构造块 文件名和文件夹名 文件名全部使用小写字母,用短横线分隔单词,用 .html 作为扩展名.混合使用大小写字 母会增加访问者输入正确地址以及找到页面的难度 文件夹的名称也应全部用 ...
- EDM实例之15个节日邮件标题分享
调查显示,去年节假日,47%的消费者打开节日邮件是因为邮件主题内容吸引.为了让企业获得更多的交易,帮助企业在繁忙的节假日内不畏竞争,全国知名的EDM邮件服务商Focussend历经多年行业的实践分析, ...
- ubuntu 安装java1.8
1.进入官网下载页面http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.选择需要的版本,进入下载页面 下载 jdk ...
- Delphi XE2 之 FireMonkey 入门(16) - 滤镜: 实例测试
窗体上需要 TImage.TOpenDialog 和六个按钮. unit Unit1; interface uses System.SysUtils, System.Types, System.U ...
- 【MM系列】SAP MM中物料帐下修改物料的价格
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 物料帐下修改物料的价格 ...
- 【ABAP系列】SAP ABAP 关于ALV布局保存选项的讲解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP ABAP 关于ALV布局保存 ...
- SSM003/构建Maven单模块项目(一)
一.环境准备 1.开发工具:IDEA 2.JDK版本:jdk1.8 3.Maven版本:apache-maven-3.2.5 4.数据库mysql. 二.基于Maven构建web项目 Step1:Fi ...