POJ 2796
来源:互联网 发布:如何建立阿里云服务器 编辑:程序博客网 时间:2024/05/16 00:40
这道题同POJ 2559,粘代码稍微修改即可。
不过同样是WA掉好多次的经历。
虽然说所有数都是非负的,但不妨碍它有 1 0 这样的数据,所以要么ans的初值是负数,要么把更新答案的条件加个等于。
一开始图省事,也是习惯性的都没加。WA了好多次。
之后气急败坏,把最后一步计算过程拆开,申请了新变量,使之开起来跟清晰,没想到一个顺手写成了int,继续WA。
但后来改成了long long后竟然T,无奈写了数组手写栈才A掉。
(还是只留我一个人弱弱地在博客里自娱自乐吧)
#include <cstdio>#include <cstring>#include <algorithm>#define M 100005using namespace std;long long n, ans = -1, u, v, l[M], r[M], t[M], sum[M], s[M], top;int main(){scanf("%lld", &n);for(int i = 1; i <= n; i++) scanf("%lld", t+i), sum[i] += sum[i-1]+t[i];for(int i = 1; i <= n; i++){while(top && t[s[top]] > t[i]){r[s[top]] = i; top--;}s[++top] = i;}while(top){r[s[top]] = n+1;top--;}for(int i = n; i; i--){while(top && t[s[top]] > t[i]){l[s[top]] = i; top--;}s[++top] = i;}for(int i = 1; i <= n; i++){long long u2 = l[i]+1, v2 = r[i]-1;long long cul = sum[v2] - sum[u2-1];long long temp = cul * t[i];if(temp >= ans) ans = temp, u = u2, v = v2;}printf("%lld\n%lld %lld", ans, u, v);}
0 0
- POJ 2796
- poj 2796
- poj 2796
- POJ 2796
- poj 2796
- poj 2796
- poj 2796
- poj 2796 数字求和
- poj 2796 Feel Good
- poj 2796#单调栈
- POJ 2796 Feel Good
- POJ 2796 Feel Good
- poj 2796 Feel Good
- poj 2796 feel good
- POJ 2796 单调栈~
- POJ-2796-Feel Good
- POJ 2796Feel Good
- poj 2796 Feel Good
- jquery easyui datagrid/table 右边线显示不全
- HTML5 Canvans 常用API整理
- OAF学习笔记-2-下拉框的制作
- 字符串常用方法
- Spring Hessian整合 404 问题
- POJ 2796
- IO多路复用之epoll总结
- OC循环渐进:文件管理--计算文件大小的五种方式
- 火车进站问题
- SqlServerExpress2005 自动备份
- IO继承体系图
- HNUST 1641 罚时计算器(模拟) 湖南科技大学2014新生选拔赛
- TR1和Boost
- Datetime月初 月末