终于在nowcoder爆发了的懒惰
题目
这类题目我实在忍不了了
Emma,随便做个nowcode比赛题吧,我在oj上也没找到
题意
求\(\sum_{L=1}^{n}\sum_{R=i}^{n}a[k](L<=k<=R)\),使得和最大
就是求所有区间的最大值之和
思路
我们用一个tot维护 \(\sum_{1}^{i}\)的前缀最大值之和
\(tot<=>\sum_{1}^{i}\)的前缀最大值之和\(
update 12.21(tot是右段点是i的最大值之和)
我们容易发现,数组中的值都是单调递增的
然后我们就维护这个数组,使他每次转移的时候更新个答案ans就ok了
\)ans<=>前i个数的答案$
维护的时候用单调栈就ok了
一开始我理解为单调队列,其实他是个单调栈
他只有一个指针,也就是栈顶在移动
你也可以想象成左边不动的单调队列
对蒟蒻的我来说用语言是很难理解的
举个例子(这里我们只求子串最大值)
1 3 2
队列为空,1进栈 tot[1]=1,ans[1]=1
1弹栈,3进栈 tot[2]=2*3, ans[2]=ans[1]+tot[2]=7;
2进栈 tot[3]=tot[2]+2=8, ans[3]=ans[2]+tot[3]=15;
(这里包含了长度为1的子串)
需要注意的地方
这里5w*5w是炸longlong的
所以
tot+=a[i]*(q[t]-q[t-1]);
这句话后半句是已经炸longlong的,炸longlong无处不在,还是随手开longlong的稳啊
代码
#include <iostream>
#include <cstdio>
#define ll long long
#define FOR(i,a,b) for(int i=a;i<=b;++i)
using namespace std;
const int maxn=1e5+7;
int read() {
int x=0,f=1;char s=getchar();
for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;
for(;s>='0'&&s<='9';s=getchar()) x=(x<<1)+(x<<3)+s-'0';
return x*f;
}
ll n,a[maxn],q[maxn];
ll solve() {
ll ans=0,tot=0,t=0;
FOR(i,1,n) {
while(t>=1 && a[i]>=a[q[t]]) tot-=a[q[t]]*(q[t]-q[t-1]),t--;
q[++t]=i;
tot+=a[i]*(q[t]-q[t-1]);
ans+=tot;
}
return ans;
}
int main() {
int T=read();
FOR(kkk,1,T) {
n=read();
FOR(i,1,n) a[i]=read();
ll ans1=solve();
FOR(i,1,n) a[i]=-a[i];
ll ans2=solve();
cout<<ans1+ans2<<"\n";
}
return 0;
}
终于在nowcoder爆发了的懒惰的更多相关文章
- 结合DDE指标来分析成本分布的重要作用
筹码分布集中度90和70是什么意思? (2015-08-14 12:12:27) 转载▼ 标签: 股票 分类: 成交量能.筹码分析 那个集中度90,和集中度70,90和70是什么意思??集中度最大 ...
- CEO 系列之一:如何当好创业公司 CEO?(不要用战术的勤奋掩盖战略的懒惰,在创业过程中,最核心问题,就是能把创业情怀变成具体问题。这个问题越具体越好)
1. 创业公司要先定一个目标,要善于把目标简化, 分解成一个, 一个更具体,更简单的问题2. 针对简单的问题进行聚焦, 做深做强3. 在做的过程中, 把断地推出自己的产品到市场上去试错, 要用事实来证 ...
- CPU使用率终于正常了——记一次订餐系统事故处理
引子 经过漫长的等待,儿子终于出生了.欣喜之余,就是各种手足无措,顾此失彼了.因为不懂,心里总是慌慌的,有点小毛病,恨不得一步就到医院. 婆媳育儿观念的差异,让心乱如麻的我,又成了风箱里的老鼠,两个不 ...
- 偶的《javascript框架设计》终于出版
#cnblogs_post_body p{ text-indent:2em!important; } 历时两年多,我的书终于付梓出版了.应各方面的要求,写软文一篇,隆重介绍一下此书对各位程序员的钱途有 ...
- 时隔8年HTML 5终于定稿!
我们第一次谈论 HTML5 要改变世界大概是因为乔布斯,他坚持在 iOS 上不兼容 Flash,在 Adobe 统治多媒体开发的那个年代,这需要付出极大的勇气.这么多年过去了,虽然所有人都在谈论 HT ...
- HTML 5终于定稿,八年后我们再一次谈谈怎么改变世界
我们第一次谈论 HTML5 要改变世界大概是因为乔布斯,他坚持在 iOS 上不兼容 Flash,在 Adobe 统治多媒体开发的那个年代,这需要付出极大的勇气.这么多年过去了,虽然所有人都在谈论 HT ...
- 考了3年,工作四年,零基础在职终于拿到CFA证书
大家都知道CFA Charterholder是独有的全球公认的投资管理从业人员高职业水平和道德水准的有力证明,是金融界卓越专业成就的象征:CFA资格强调和遵循极其严格的职业操守和道德准则,世界各主要发 ...
- HTML5定稿了,终于有一种编程语言开发的程序可以在Android和IOS两种设备上运行了
2007 年 W3C (万维网联盟)立项 HTML5,直至 2014 年 10 月底,这个长达八年的规范终于正式封稿. 过去这些年,HTML5 颠覆了 PC 互联网的格局,优化了移动互联网的体验,接下 ...
- 2014年10月底/终于/HTML5定稿……/技术从来不会成为发展的绝对瓶颈/反而商业成了无法逾越的鸿沟【转载+整理】
原文地址 本文内容 一.HTML5 诞生 二.HTML5 第一阶段: Web 增强与打破垄断 三.HTML5 第二阶段: 移动互联网 四.HTML5 这回真的来了 五.颠覆原生 App 六.还有什么会 ...
随机推荐
- 【Git 使用笔记】第四部分:git在公司中的开发流程
先声明几个变量 仓管A:主分支,只有master分支仓管B:开发分支,只有各个业务开发分支 仓管B fork 于 A 如下图 为了保证 代码的稳定性,只有 仓管B中的某个分支测试完毕并进行了代码r ...
- [python-opencv] 模糊操作
@不要在奋斗的年纪 选择安逸 均值模糊 中值模糊 自定义模糊 意义与应用场景 模糊的基本原理: 1.基于离散卷积 2.定义好每个卷积核 3.不同卷积核得到不同的卷积效果 4.模糊是卷积的一种表象 #均 ...
- Redis添加历史浏览记录
参考资料 http://redisdoc.com/index.html http://redis-py.readthedocs.io/en/latest/#indices-and-tables 1.什 ...
- kettle中源和目标表结构不一致的情况处理
创建数据仓库的过程中,往往会遇到这样的问题,例如:源表由于业务原因新增了字段,而ETL程序中是按照之前的源表结构进行抽取的,那么如果不重新构建ETL程序,新的指标就不会流入DW,问题如下图所示 创建了 ...
- [py]py常用模块小结
- python md5校验: https://blog.csdn.net/linda1000/article/details/17581035 import hashlib hashlib.md5( ...
- lua的文件管理
lua没有自己的文件管理 只有读取和写入文件,但是可以通过调用lfs(LuaFileSystem),lfs是一个 用于lua进行文件访问的库,支持lua5.1和lua5.2,并且跨平台 lfs的使用: ...
- [LeetCode] 101. Symmetric Tree_ Easy tag: BFS
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...
- print(array)时array中间是省略号没有输出全部的解决方法
import numpy as np np.set_printoptions(threshold=np.inf) 大量元素情况 可以采用set_printoptions(threshold='nan' ...
- 4.keras实现-->生成式深度学习之用GAN生成图像
生成式对抗网络(GAN,generative adversarial network)由Goodfellow等人于2014年提出,它可以替代VAE来学习图像的潜在空间.它能够迫使生成图像与真实图像在统 ...
- Pycharm上python3运行unittest无法生成测试报告
原文地址https://www.cnblogs.com/yoyoketang/p/7523409.html 前言 经常有人在群里反馈,明明代码一样的啊,为什么别人的能出报告,我的出不了报告:为什么别人 ...