链接 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 区区区间间间的更多相关文章

  1. NowCoder--牛可乐发红包脱单ACM赛C_区区区间间间

    题目链接:C_区区区间间间 思路:算贡献,求出每个数为当前最大值时所在的区间个数,和每个数为最小值的区间个数 和这个题有点类似 搭配食用效果更佳 点击这里 #include<bits/stdc+ ...

  2. 牛客训练赛25-A-最长区间

    https://www.nowcoder.com/acm/contest/158#question 这题问最长的严格连续递增序列的最长长度是多少? 最开始感觉这道题不可做,因为有1e5个点,还有1e5 ...

  3. 牛客ACM赛 B [小a的旅行计划 ]

    链接 B 小a的旅行计划 把\(n\)个数中选任意数分成\(a,b\)两个集合,集合无区别,要求不包含且有交,求方案数.\(n\leq 10^{13}\) 首先讨论\(a,b\)并集是否为全集: 若是 ...

  4. 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?

    牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...

  5. 牛客网小白月赛5I区间(差分数组)

    链接:https://www.nowcoder.com/acm/contest/135/I来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536 ...

  6. 牛客小白月赛5 I - 区间

    看到一份不错的操作..... 链接:https://www.nowcoder.com/acm/contest/135/I 来源:牛客网 Apojacsleam喜欢数组. 他现在有一个n个元素的数组a, ...

  7. 牛客小白赛5 无关(relationship) 容斥原理(计算因子数的模板)

    链接:https://www.nowcoder.com/acm/contest/135/A来源:牛客网 若一个集合A内所有的元素都不是正整数N的因数,则称N与集合A无关.   给出一个含有k个元素的集 ...

  8. 牛客巅峰赛S2第6场题解

    牛客编程巅峰赛S2第6场 A-StringⅡ 题目 题目描述 给出一个仅包含小写字母的字符串s,你最多可以操作k次,使得任意一个小写字母变为与其相邻的小写字母(ASCII码差值的绝对值为1),请你求出 ...

  9. 牛客小白赛1 F题三视图

    链接:https://www.nowcoder.com/acm/contest/85/F来源:牛客网 题目描述 Etéreo 拿出家里的许多的立方体积木,堆成了一个三维空间中的模型.既然你高考选了技术 ...

随机推荐

  1. spring-boot-devtools热加载不起作用

    在开发过程中,希望修改时能够及时更新修改,即热加载,但是spring-boot-devtools不起作用.这主要是两个原因导致. 一.spring-boot-maven-plugin插件没有配置,如下 ...

  2. IDEA简单破解激活操作流程(我在用的)

    其实简单的,你需要下一个包,将他放入你的IDEA安装目录的bin下,如下下图 下载地址:https://pan.baidu.com/s/1aJDefDGmfYGrkcJCpZYccA 看到红线的地方了 ...

  3. win7 注册删除postgresql服务

    注册服务 删除服务 备注:都以管理员身份运行dos

  4. RFC、EMCA-262、TC-39等名词

    请求意见稿(英语:Request For Comments,缩写:RFC)是一系列备忘录. The RFC series contains technical and organizational d ...

  5. 07 归档模式 Active redo log丢失或损坏的恢复

    环境同上一篇 模拟处于active状态的redo log损坏 sesion 1 SYS@ orcl >/ GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEM ...

  6. 【Linux】limits.conf 不重启就生效或者不生效的原因

    前阵子,我要用到使LInux的文件打开数为65534个,而且需要永久生效,于是将配置写到了: vim /etc/security/limits.conf * soft nofile 65534* ha ...

  7. layui的分页使用(前端分页)

    <div id="one"></div>//显示数据库中数据的<ul id="ones"></ul>//显示分页 ...

  8. Django报错[WinError 123] 文件名、目录名或卷标语法不正确。: '<frozen importlib._bootstrap

    当你在项目文件中删除app对应的文件 却没有在项目url中删除之前配置的路径 也没有删除setting中配置的app 那么就会报错[WinError 123] 文件名.目录名或卷标语法不正确.: '& ...

  9. Vue ----》 如何实现 sessionStorage 的监听,实现数据响应式

    在开发过程中,组件中的随时可能改变的数据有的是缓存到sessionStorage里面的,但是有些组件取seesionStorage中的值时,并不能取到更新后的值. 接下来就说一下,当seesionSt ...

  10. Maven系列学习(三)Maven生命周期和插件

    Maven生命周期和插件 Maven另外的两个核心概念就是生命周期和插件,Maven的生命周期都是抽象的,其实实际行为都是由插件来完成的,生命周期和插件两者协同工作 1.生命周期 Maven的生命周期 ...