Feel Good UVA
来源:互联网 发布:asp会员管理系统源码 编辑:程序博客网 时间:2024/06/09 21:54
题目传送门
题意:给你一个长度为n的非负整数序列,求一段连续的字序列a1,a2,a3…..,使得(a1+a2+..+ar)*min(a1,a2,..,ar)的值最大。
思路:这个题不难到想到要求最大值就是要看当前的点往左往右能够延伸的到的最远距离(使当前的点是这一段序列当中的最小值),但是如果暴力枚举的话时间复杂度太高所以要进行优化,记录当前的节点能够延伸到的最远距离,然后后面的节点如果小于当前的节点,那么当前的节点能够延伸到的地方后面的节点也一定能够延伸到就不需要再重复计算了。
PS:这个题好像有点坑啊,在Gym上能过的代码在UVA就过不了,题目当中明明是说的如果使得值最大即可任意输出其中一个,但是这个样是会wa的,必须还要使左右的两点之间的距离最短才行,好坑啊。
#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <fstream>#include <iostream>#include <list>#include <map>#include <queue>#include <set>#include <sstream>#include <stack>#include <string>#include <vector>#define MAXN 100010#define MAXE 10010#define INF 100000000#define MOD 1000000007#define LL long long#define pi acos(-1.0)using namespace std;LL arr[MAXN], l[MAXN], r[MAXN], sum[MAXN];int main() { std::ios::sync_with_stdio(false); int n; int kase = 0; while (cin >> n) { memset(arr, -1, sizeof(arr)); memset(sum, 0, sizeof(sum)); kase++; if (kase > 1) { cout << endl; } for (int i = 1; i <= n; ++i) { cin >> arr[i]; l[i] = r[i] = i; sum[i] = sum[i - 1] + arr[i]; } for (int i = 1; i <= n; ++i) { while (arr[l[i] - 1] >= arr[i]) { l[i] = l[l[i] - 1]; } } for (int i = n; i >= 1; --i) { while (arr[r[i] + 1] >= arr[i]) { r[i] = r[r[i] + 1]; } } LL ans = 0; LL left = 1, right = 1; for (int i = 1; i <= n; ++i) { if (arr[i] * (sum[r[i]] - sum[l[i] - 1]) > ans || (arr[i] * (sum[r[i]] - sum[l[i] - 1]) == ans && right - left > r[i] - l[i])) { left = l[i]; right = r[i]; ans = arr[i] * (sum[r[i]] - sum[l[i] - 1]); } } cout << ans << endl; cout << left << " " << right << endl; } return 0;}/*63 1 6 4 5 2 */
阅读全文
0 0
- UVa 1619 Feel Good
- UVa - 1619 - Feel Good
- uva 1619 - Feel Good
- UVA 1619 Feel Good
- Feel Good UVA
- Feel Good - UVa 1619 dp
- UVA 1619 Feel Good(DP)
- UVA 1619(p256)----Feel Good
- 【UVA】1619-Feel Good(数据结构-栈)
- UVA - 1619 Feel Good 标记+枚举
- UVa 1619:Feel Good(单调栈)
- Feel Good
- Feel Good
- Feel Good
- Feel Good
- Feel Good
- UVA - 1619 Feel Good(高效算法:滑动窗口)
- UVA 1619Feel Good 感觉不错 迭代法 (2005 NE)
- pat乙级1004
- easyui Combotree默认选中某一项
- Nginx基础配置详解
- Dlib配置---Win7 与 Linux
- CF432 D
- Feel Good UVA
- 算法导论之哈希算法
- vim命令使用大全
- Nginx配置tp5支持pathinfo以及隐藏入口文件
- Navicat Premium 实现Oracle基本操作
- MySQL中的锁(表锁、行锁,共享锁,排它锁,间隙锁)
- 使用#include包含.txt文件
- 随机图片验证码
- B树、B-树、B+树、B*树