POJ 2796 feel good(单调栈)

计算机视觉——多视图几何 多视图几何1.前言1.1 多视图几何概念2. 基本原理2.1 对极几何2.2 基础矩阵2.2.1 基础矩阵推导2.2.2 求解基础矩阵3. 实验过程3.1 实验数据准备3.2 实验代码3.3 实验结果及分析4. 实验中遇到的问题 1.前言 1.1 多视图几何概念 多视图几何是利用在不同视点所拍摄图像间的关系,来研究照相机之间或者特征之间关系的一门科学。 多视图几何(Multiple View ... 阅读详情

题意:求出以a[i]为区间最小数字的区间值(a[i]*区间和)

单调栈的性质:

1、维护从左往右的递增栈可以得到左边第一个比a[i]小的元素位置L[i]

2、维护从左往右的递减栈可以得到左边第一个比a[i]大的元素位置L[i]

3、维护从右往左的递增栈可以得到右边第一个比a[i]小的元素位置R[i]

4、维护从右往左的递减栈可以得到右边第一个比a[i]大的元素位置R[i]

 

因此,只需要先用前缀和存一下和,然后两个for循环从前往后维护递增栈和从后往前维护递增栈分区别找出左边第一个小的位置和右边第一小的位置,再找出他们的差(前缀和做差)*a[i]即可

 

l            1     1     3     3     5     3

a[i]        3     1     6     4     5     2

r            1     6    3      5     5     6

 

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
using namespace std;
long long num[100003];
long long sum[100003];
int lef[100003];
int rig[100003];
int n;
int main(){
    /*  STL写法  
    stack<int> st;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>num[i];
        lef[i]=i;
        rig[i]=i;
    }
    for(int i=1;i<=n;i++){
        if(st.empty()||num[st.top()]<num[i])
            st.push(i);
        else{
            lef[i]=lef[st.top()];
            st.pop();
            i--;
        }
    }
    for(int i=n;i>=1;i--){
        if(st.empty()||num[st.top()]<num[i])
            st.push(i);
        else{
            rig[i]=rig[st.top()];
            st.pop();
            i++;
        }
    }*/

    while(~scanf("%d",&n)){
    for(int i=1;i<=n;i++){
        cin>>num[i];
        sum[i]=num[i]+sum[i-1];
        lef[i]=rig[i]=i;
    }
    for(int i=2;i<=n;i++){
        while(lef[i]>1&&num[lef[i]-1]>=num[i])
            lef[i]=lef[lef[i]-1];
    }
    for(int i=n-1;i>=1;i--){
        while(rig[i]<n&&num[rig[i]+1]>=num[i])
            rig[i]=rig[rig[i]+1];
    }
    long long m=-1;
    long long ans;
    int l,r;
    for(int i=1;i<=n;i++){
        ans=num[i]*(sum[rig[i]]-sum[lef[i]-1]);
        if(ans>m){
            m=ans;
            l=lef[i];
            r=rig[i];
        }
    }
    printf("%I64d\n%d %d",m,l,r);
    }
	return 0;
}

 

AI:Coze、Dify、n8n:三款低代码工具如何选? Coze、Dify、n8n:三款低代码工具如何选? 阅读详情

相关推荐

从零到一:RV1126与IMX415的硬件交响曲——深入解析Linux IPC摄像头的硬件调试艺术

本文深入解析了RV1126与IMX415组合的Linux IPC摄像头硬件调试技术,涵盖硬件接口检查、设备树配置、驱动加载验证及ISP调优等关键步骤。通过详细的操作指南和常见问题解决方案,帮助开发者快速掌握摄像头调试技巧,提升开发效率。

weixin_29161785的博客 978

单调栈解决数组左右两边第一个比当前值大的数

题目描述 给你一个数组,请你求出每一个位置上左边以及右边距离最近的比它大的数。要求时间复杂度O(N) 思路分析 一般思路就是每个位置,左右遍历找,但是这样的时间复杂度是O(N^2),因此,如何实现时间复杂度O(N)?那就是要用到单调栈问题。 单调栈 维护一个栈,要求栈从上到下是从小到大的顺序。 流程: 把数组元素从前开始依次入栈,然后,每次入栈前,和栈顶元素比较,如果比栈顶元素小,就直接入栈,如果大于栈顶元素,就把栈顶元素出栈,同时,每出栈一个数,这个数其实就找到了结果,它栈下面的数,其实就是左边第一个比它

weixin_43923436的博客 981

深入浅出:CosineLRScheduler 调度器的原理与实战应用

本文深入解析了CosineLRScheduler调度器的核心原理与实战应用,详细介绍了余弦退火算法及其在深度学习模型训练中的优势。通过参数配置建议、PyTorch实现示例和常见问题解决方案,帮助开发者高效应用该调度器提升模型性能,特别适用于计算机视觉和自然语言处理任务。

sss66的博客 859

树状数组学习系列1 之 初步分析——czyuan原创

转自:http://hi.baidu.com/czyuan_acm/blog/item/49f02acb487f06f452664fbc.html     其实学树状数组说白了就是看那张图,那张树状数组和一般数组的关系的,看懂了基本就没问题了,推荐下面这个教程:http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=binaryInd

Stay hungry,stay foolish! 837

数字图像处理第九章笔记

目录一、腐蚀与膨胀1、腐蚀2、膨胀3、对偶性4、开操作与闭操作二、一些基本的形态学算法1、边界提取2、孔洞填充3、连通分量提取4、凸壳5、细化6、粗化7、骨架8、形态学重建三、灰度级形态学1、腐蚀和膨胀2、开运算和闭运算3、灰度级形态学算法 一、腐蚀与膨胀 1、腐蚀 腐蚀可以去除图像的某些部分。 2、膨胀 膨胀可以连接裂缝。 3、对偶性 膨胀和腐蚀彼此关于集合求补运算和反射运算是对偶的 4、开操作与闭操作 开操作:B对A先腐蚀,再进行膨胀 可以平滑物体轮廓,断开较窄的狭颈并消除较细的突出物。 闭操作

方悔读书迟 1375

kettle信息发送钉钉

由于其他的作业比较多,想要在job中加入一个转化发送消息到钉钉,其他的配置说明直接获取系统的信息。这样也避免直接修改其他的转换和大量的工作量。 步骤: 1、新建一个转换 拉取获取系统信息、获取变量、JavaScript代码、获取access_token组件。 2、获取系统信息设置 拿到需要的信息,比如作业的读写更新删除行数,job的日志内容 这个日志内容同在作业执行页面下输出的日志,所以可以在执行作业时选择是详细日志、基本日志还是错误日志。 3、获取变量 获取变量主要是想要去拿到job的名称,文件名。按

Deng_7788的博客 1448

计算数组中每个数左边/右边第一个比其大/小的值

计算数组中每个数左边第一个比其大的值 如果用最简单的暴力法,时间复杂度最坏情况下 O(n^2) 用栈解决,遍历到a[i] 当栈中为空,直接压入 栈不为空,比较栈顶元素 top 和 a[i]。 若 top &lt; a[i] ,弹出栈顶元素。循环执行,直到遇到第一个 top&gt;a[i] (top即为第一个比其大的元素)或者 栈为空(左边没有比 a[i]...

qq1169091731的博客 2603

Python爬取上市公司年报并进行财务比率分析:基于异步爬虫与数据挖掘的实战

在当今数据驱动的投资时代,获取并分析上市公司财务数据对于投资者、分析师和研究人员至关重要。中国证监会指定的上市公司信息披露网站——巨潮资讯网,包含了所有A股上市公司的年报、季报及其他公告信息。本项目将展示如何使用Python最新技术栈爬取巨潮网的年报数据,提取关键财务指标,并进行深入的财务比率分析。本文将采用异步爬虫技术提高数据采集效率,使用现代解析库处理PDF和HTML文档,并结合pandas进行数据分析和可视化。整个过程将遵循合规合法的爬虫伦理,尊重网站robots.txt协议,设置合理的请求间隔。

2201_76125261的博客 666

单调不减序列查询第一个大于等于_「面向 offer 学算法」笔面试大杀器 -- 单调栈...

目录前言单调栈初入茅庐小试牛刀打怪升级出师试炼前言单调栈是一种比较简单的数据结构。虽然简单,但在某些题目中能发挥很好的作用。最近很多大厂的笔试、面试中都出现了单调栈的题目,而还有不少小伙伴连单调栈是什么都不了解,因此老汪专门写了这篇文章,希望对你们有所帮助。老规矩,先上一道题给大家看看单调栈能解决什么样的问题,这题是 2020 年猿辅导(K12 教育的独角兽,研发岗白菜价 40W 起步,不加班高福...

weixin_39797912的博客 293

三态门Multisim电路仿真——硬件工程师笔记

三态门原理及应用摘要 三态门是具有高电平(1)、低电平(0)和高阻态(Z)三种输出的逻辑电路,通过使能端(EN)控制状态切换。高阻态时输出端等效断路,避免信号冲突。其核心应用包括: 总线系统:多设备共享总线时,仅使能选中设备的三态门,其余保持高阻态,防止干扰。 数据选择器:利用三态门切换多路输入信号,简化电路设计。 实现方式分两种: TTL三态门(三极管构成):低电平使能有效,仿真验证输出逻辑与高阻态。 MOS三态门(MOS管构成):高电平使能有效,仿真显示使能信号控制输出状态。 文中还附硬件工程师笔试面试

XU157303764的博客 2008

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

XiaoqiangClub的博客 1万+

计算数组中每个数左边/右边第一个比其大/小的值 python

计算数组中每个数左边第一个比其大的值 如果用最简单的暴力法,时间复杂度最坏情况下 O(n^2),遍历每一个数,再遍历它的两边 arr = [5,2,4,9,3,1,5,7,8,6,1,3,5,5] stack = [] n = len(arr) leftFirstMax = [None]*n rightFirstMax = [None]*n for i in range(n): p = i-1 ...

jianyuchen23的博客 2669

【YOLOv11工业级实战】22. YOLOv11动态蛇形卷积破解弯曲裂纹检测难题(附2小时部署代码)

摘要:本文聚焦工业场景中弯曲裂纹检测的核心痛点,针对风电叶片、织物纱线等曲线缺陷传统检测漏检率高的问题,提出基于动态蛇形卷积(DSC)的YOLOv11优化方案。因企业数据保密,采用AITEX织物缺陷库(含曲线纱线断裂标签)结合Blender物理仿真生成2000张弯曲裂纹数据,实现从数据准备到部署的全流程实操。通过将DSC模块插入YOLOv11 Neck层,弯曲裂纹召回率从68.1%提升至89.4%,mAP@0.5达83.7%,推理速度3.1ms(2080Ti)。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1153

poj 2796 Feel Good 单调栈题解

单调栈模板题#include <bits/stdc++.h> using namespace::std;typedef long long ll; const ll MAXN = 100000+50; ll ms[MAXN], r; ll L[MAXN], R[MAXN]; ll n, pos, maxNum, x[MAXN]; ll sum[MAXN];int main() { ios_b

小楼吹彻玉笙寒 846

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

poj2796Feel Good(单调栈)

Feel Good Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 13572   Accepted: 3796 Case Time Limit: 1000MS   Special Judge Description Bill is developin

fouzhe的博客 606

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

[poj 2796 Feel Good] 单调栈

[poj 2796 Feel Good] 单调栈题目链接:[poj 2796 Feel Good] 单调栈 题意描述:给定N个数a1,a2,…,an(1≤N≤105,0≤ai≤106)a_1,a_2,\ldots,a_n(1\le N\le 10^5, 0\le a_i\le 10^6),求区间最小的数*区间和。 解题思路: 单调栈: 顾名思义就是在入栈时遵循单调原则,可以求出一个元素向左(

Fighting! 1462

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

POJ 2796 Feel Good 【单调栈】

题目链接:http://poj.org/problem?id=2796—————————————————————————————————-. Feel Good Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 13624 Accepted: 3807 Case Time Limit: 1000MS

Tabris的博客 629

POJ2796 Feel Good 单调栈

http://poj.org/problem?id=2796 题意:要求找一个区间的价值最大,区间价值定义为,区间和乘上区间最小值。 做法:直接找到以每一个值为最小值的区间,然后遍历一遍就完了。 此题还有一些坑,比如最大值为0,以及long long等 #include<bits/stdc++.h> using namespace std; typedef long long...

KXL5180的博客 228

poj2796Feel Good 单调栈

//一个长度为n的序列,对于一个区间中的value为这个区间的最小值乘上这个区间的所有数的和 //这就是找每一个点,找以其为最小值的区间 //显然直接暴力法找必然超时 //可以开一个单调递增栈,对于每一个新元素a[i] //当前值小于等于栈顶元素,表示以栈顶元素为最小值的区间的右端是i //栈顶元素a[j]出栈 , 由于是单调递增栈,新的栈顶元素a[k]必然小于a[j],故需要更新新的栈

ijbuhv的专栏 4942

POJ2796 Feel Good 题解 单调栈

题目链接:http://poj.org/problem?id=2796【题目描述】《人类情感研究》 special judge比尔正在为人类情感研究发展一种新的数学理论。他最近的研究重点在于好的日子和坏的日子是如何在一段时期内影响人的记忆力的。比尔提出了一个想法,他为人们生活的每一天都赋予了一个非负整数值。比尔将这个值称为一天中的情感价值。一天的情感价值越大,人们在这一天就会过得越好。比尔认为,人...

weixin_30706507的博客 209

POJ 2796 Feel Good(单调栈)

题目地址:POJ 2796 单调栈的第一题就是这道。。把我弄的晕头转向。现在终于明白了,对单调栈又加深了理解。原来单调栈不只是可以维护数。 代码如下: #include #include #include #include #include #include #include #include #include #include #include #include u

scf0920 1031

【POJ-2796】Feel Good【单调栈】

题意: 给出一个序列,长度为 nnn。定义区间价值为区间和*区间最小值,求出这个序列中的最大区间价值。(n≤105,0≤ai≤106)(n\leq 10^5,0\leq ai\leq 10^6)(n≤105,0≤ai≤106) 思路: 此题题意十分简洁,求区间价值,并且区间价值定义就是区间和*区间最小值。因此此题最直接的思路就是枚举区间,然后发现 n2n^2n2 算法不可行,然后考虑枚举最小值,...

lucius-liu.cn 718

POJ 2796 Feel Good 单调栈

最近做这方面的题很多,感觉单调栈很是神奇,通过维护一个单调不减的栈,遇到小于栈顶的栈顶元素便出栈,此时跟新结果。 这个比RMQ的ST算法要快很多,ST算法要枚举每一个区间(没想到其他做法,可能要dp,反正不会)。这个题关键在于给每一个点找一个最长子序列,使其最小值为其本身,这样扫一遍得到结果。而单调栈正好可以解决这个问题。 (这个题大家注意要用long long我被int卡死,干脆全换long

1292765944的专栏 1827

POJ2796 Feel Good——单调栈

题目链接 题目大意 给你 nnn 个数,求一个区间和区间的值,定义区间的值为区间内所有数之和乘以区间最小值,输出区间的值以及区间的左右端点 解题思路 我们考虑每个数作为所在区间的最小值时,这个区间的左右端点是什么。 这时,我们可以正反跑两次单调栈,分别得到这个数作为区间最小值时,这个区间的左右端点。 考虑正向跑单调栈求区间左端点。维护一个上升的单调栈 如果当前元素比栈顶大,直接push进去,这个数的区间左端点就是栈顶元素的下标+1 如果当前元素小于等于栈顶元素,一直pop栈直到满足当前元素比栈顶大,然后取栈

yezi_coder的博客 210

POJ2796 Feel Good(单调栈)

Description Bill is developing a new mathematical theory for human emotions. His recent investigations are dedicated to studying how good or bad days influent people’s memories about some period of l...

riba2534的博客 840
上一篇: HDU 2087 剪花布条(STL、暴力)
下一篇: CodeForces——948C Producing Snow(优先队列)
donCoder
博客等级 码龄9年 65粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值