牛客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 拿出家里的许多的立方体积木,堆成了一个三维空间中的模型.既然你高考选了技术 ...
随机推荐
- SqlServer2012 File Table文件表
SQL Server 2012 提供一种特殊的“文件表”,也称为“FileTable”. FileTable 是一种专用的用户表,它包含存储 FILESTREAM 数据的预定义架构以及文件和目录层次结 ...
- php system exexc 立即返回
有时候会用到php调用服务器端的其它可执行文件,system和exec函数都是阻塞执行的,执行完第三方程序再返回. 如果我们需要立即返回,让第三方程序在后台继续执行,调用方式如下: linux,noh ...
- 使用Mybatis执行sql脚本
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- spring的后置处理器——BeanPostProcessor以及spring的生命周期
后置处理器的调用时机 BeanPostProcessor是spring提供的接口,它有两个方法——postProcessBeforeInitialization.postProcessAfterIni ...
- 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第7节 内部类_7_内部类的概念与分类
完整
- windows7搭建xmapp部署wordpress
前言 为了学习自动化,在网上搜索资料学习了一下在本机安装xmapp,搭建php环境,本机部署wordpress这个开源项目 内容 主要分成以下几步: 准备安装包,快速安装xmapp 根据实际需求,修改 ...
- AUTOGUI生成的一个简易文本编辑器
; Generated by AutoGUI #SingleInstance Force #NoEnv SetWorkingDir %A_ScriptDir% SetBatchLines - #Inc ...
- 【ABAP系列】SAP ABAP中将字符格式的金额转换为数值的函数
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP中将字符格式的金 ...
- 怎么用 pytorch 查看 GPU 信息
如果你用的 Keras 或者 TensorFlow, 请移步 怎么查看keras 或者 tensorflow 正在使用的GPU In [1]: import torch In [2]: torch.c ...
- Console.Out 属性和 XmlDocument.Save 方法 (String)
Console.Out 属性 默认情况下,此属性设置为标准输出流. 此属性可以设置为另一个流SetOut方法. 请注意,调用Console.Out.WriteLine方法是等效于调用相应WriteLi ...