【POJ2796】Feel Good (简单单调栈)
(;´༎ຶД༎ຶ`)写完才发现这道题其实和上一篇博客的题一毛一样呀。。
题目地址:http://poj.org/problem?id=2796
题意
给出数字序列,定义一个区间内的value值是这个区间所有数之和*这个区间的最小数,求对于这个数字序列,最大的value值
解题思路
和https://mp.csdn.net/postedit/89791878这个类似,找a[i]为最小值所在的区间,区间和用前缀和数组计算即可,再遍历i求最大的value值,注意数字序列中所有值都一样的情况
ac代码
数组比较大,要开在外面。。。
#include <iostream>
#include <algorithm>
#include <stack>
typedef long long ll;
#define maxn 1000005
using namespace std;
ll n,a[maxn]={0},sum[maxn]={0},l[maxn],r[maxn],L=-1,R=-1;
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);stack<ll> s;scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld",&a[i]);sum[i]=sum[i-1]+a[i];}for(ll i=1;i<=n;i++){while(!s.empty() && a[s.top()]>=a[i])s.pop();if(s.empty()) l[i]=1;//注意此时l[i]的值else l[i]=s.top()+1;s.push(i);}while(!s.empty()) s.pop();for(ll i=n;i>=1;i--){while(!s.empty() && a[s.top()]>=a[i])s.pop();if(s.empty()) r[i]=n;//注意此时r[i]的值else r[i]=s.top()-1;s.push(i);}ll ans=-1;for(ll i=1;i<=n;i++){ll t=(sum[r[i]]-sum[l[i]-1])*a[i];if(t>ans){ans=t;L=l[i];R=r[i];}}printf("%lld\n%lld %lld",ans,L,R);return 0;
}
【POJ2796】Feel Good (简单单调栈)相关推荐
- POJ2796 Feel Good(单调栈)
题意: 给出一列数据,要求一个区间内最小值与区间内数据总和乘积最大值 要点: 还是单调栈,这次我自己写的,先做了几题比较简单的果然还是有效果的,这题也是一样,按点遍历,网上大神做的是直接遍历一次即可, ...
- upc组队赛1 小C的数学问题【单调栈】(POJ2796)
小C的数学问题 题目描述 小C是个云南中医学院的大一新生,在某个星期二,他的高数老师扔给了他一个问题. 让他在1天的时间内给出答案. 但是小C不会这问题,现在他来请教你. 请你帮他解决这个问题. 有n ...
- 单调栈与单调队列简单例题
单调栈与单调队列简单例题 单调栈: POJ3250 题意:有n只奶牛排成一列向右看,每头奶牛只能看到比自己矮的奶牛,即会被高的奶牛挡住后面,问共有多少只奶牛能被看到 思路:考虑每头奶牛能被前面牛看到的 ...
- 单调栈解木板倒水问题(单调栈的简单应用)
题目描述: 地上从左到右竖立着 n 块木板,从 1 到 n 依次编号,如下图所示.我们知道每块木板的高度,在第 n 块木板右侧竖立着一块高度无限大的木板,现对每块木板依次做如下的操作:对于第 i 块木 ...
- 蒟蒻的ACM数据结构(四)-单调队列和单调栈
单调队列和单调栈 一.概念 二.实现 三.题目 单调队列 洛谷P1886 滑动窗口 解析 单调栈 [GXOI/GZOI2019]与或和 解析 POJ3250 Bad Hair Day 解析 POJ 2 ...
- leetcode 739. 每日温度 单调栈解法和暴力法及其优化 c代码
如题: 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高, 请在该位置用 0 来代替.例如,给定一个列表 temperature ...
- 51Nod 1102 面积最大的矩形 +1272 最大距离 单调栈
51Nod 1102 面积最大的矩形 记笔记记笔记:对于区间最值与区间长度/和等的问题,用单调栈来维护区间端点. 这里来补一补单调栈和单调队列的基础知识: 单调栈: ...
- CodeForces - 1484E Skyline Photo(dp+单调栈)
题目链接:点击查看 题目大意:给出 nnn 个建筑,每个建筑有一个高度和一个美丽值,现在要求划分为数个连续的区间,使得所有区间的贡献之和最大,其中每个区间的贡献值为,区间中高度最低的建筑物的美丽值 题 ...
- CodeForces - 1407D Discrete Centrifugal Jumps(单调栈+dp)
题目链接:点击查看 题目大意:给出 n 个大楼的高度记为 h,现在需要从第一个大楼到达第 n 个大楼,问最小步数是多少,只有满足以下条件时才能从 i 移动到 j ,设 i < j: 题目分析:无 ...
- 联想杯 - Gentle Jena(单调栈)
Problem G. Gentle Jena Input file: Standard Input Time limit: 2 seconds Output file: Standard Output ...
最新文章
- devexpress toolbar 填充整行宽度
- c语言图论,图论问题------大家过来看看
- 高压放电与防静电塑料包装
- Django中手动创建虚拟环境
- 今年新增院士中,最年轻的是他
- 软件测试岗需要会什么条件,应聘软件测试岗位需要具备什么条件?
- 【hortonworks/registries】Parameter Schema name is null
- ASN.1编解码:asn1c-ORAN-E2AP
- 你相信逛 B 站也能学编程吗?
- c语言文件操作——复制文件
- Linux进程管理四大‘名捕’
- ISO IEC 27001 企业信息安全管理要求
- 能源管理系统背景概述
- 玉柴spn码故障对照表_玉柴电控柴油机故障代码及读码方法
- linux4.12 交叉编译链,交叉编译工具链(很详细)
- 使用多个可选过滤器过滤 Eloquent 模型
- mac如何查看wifi密码
- 国科大2019年大数据分析课件作业 考试-程学旗 靳小龙 刘盛华
- Linux中FTP设置登录欢迎词,怎么为FTP登陆用户设置欢迎语(servu)
- typename的两个意思
热门文章
- 一个本科毕业生的Java学习之路
- Java 理论与实践: 您的小数点到哪里去了?
- VSTT Rosario CTP
- vue-cli 打包出来的文件缺少_Vue cli构建 及 项目打包以及出现的问题 (update 2020-05)...
- python 优点_python语言有什么优势
- 数据库配置文件,db.properties、jdbc.properties
- 【转】Element-UI中上传的action地址相对问题
- 入门笔记 Day two
- 徐州医科大学党委书记夏有兵一行莅临云创
- Zephyr学习(一)Zephyr介绍