hdu5696区间的价值 -- 2016"百度之星" - 初赛(Astar Round2B)
Problem Description
我们定义“区间的价值”为一段区间的最大值*最小值。
一个区间左端点在L,右端点在R,那么该区间的长度为(R−L+1)。
现在聪明的杰西想要知道,对于长度为k的区间,最大价值的区间价值是多少。
当然,由于这个问题过于简单。
我们肯定得加强一下。
我们想要知道的是,对于长度为1∼n的区间,最大价值的区间价值分别是多少。
样例解释:
长度为1的最优区间为2−2 答案为6∗6
长度为2的最优区间为4−5 答案为4∗4
长度为3的最优区间为2−4 答案为2∗6
长度为4的最优区间为2−5 答案为2∗6
长度为5的最优区间为1−5 答案为1∗6
Input
多组测试数据
第一行一个数n(1≤n≤100000)。
第二行n个正整数(1≤ai≤10^9),下标从1开始。
由于某种不可抗力,ai的值将会是1∼10^9内随机产生的一个数。(除了样例)
Output
输出共n行,第i行表示区间长度为i的区间中最大的区间价值。
Sample Input
5
1 6 2 4 4
Sample Output
36
16
12
12
6
看见那鲜红的随机产生了吗?显然这是突破口(当时看着很多人A然而并没有想出来
其实对于随机数据,有些暴力的效率很高
我们枚举每一个点作为区间的最大值(所以大于这个值的都不能取),然后向两边扩展,扩展的顺序是将较大者加入区间,边做边更新答案
贪心的正确性算比较显然吧,较大值加进来肯定比较小值加进来优,因为最大值已经固定了,我们要让最小值最大
#include<cstdio>
using namespace std; int a[],n;
long long ans[]; void work()
{
for(int i = ;i <= n;i++)
scanf("%d",&a[i]);
for(int i = ;i <= n;i++)
ans[i]=; for(int i = ;i <= n;i++)
{
long long max=a[i],min=a[i];
int len=,l=i,r=i;
while()
{
if(ans[len]<max*min)ans[len]=max*min;
if(l== || a[l-]>max)
if(r==n || a[r+]>max) break;
else
{
r++;
len++;
if(a[r]<min)min=a[r];
}
else
if(r==n || a[r+]>max)
{
l--;
len++;
if(a[l]<min)min=a[l];
}
else
{
if(a[l-]>a[r+])
{
l--;
len++;
if(a[l]<min)min=a[l];
}
else
{
r++;
len++;
if(a[r]<min)min=a[r];
}
}
}
} for(int i = ;i <= n;i++)
printf("%I64d\n",ans[i]);
} int main(){
while(scanf("%d",&n)!=EOF)
work();
return ;
}
AC代码
hdu5696区间的价值 -- 2016"百度之星" - 初赛(Astar Round2B)的更多相关文章
- 2016"百度之星" - 初赛(Astar Round2B) 1006 中位数计数
思路:统计当前数左边比它小|大 i个人,相应右边就应该是比它大|小i个人 l数组表示左边i个人的方案 r表示右边i个人的方案 数组下标不可能是负数所以要加n //#pragma comment(lin ...
- 2016百度之星-初赛(Astar Round2A)AII X
Problem Description F(x,m) 代表一个全是由数字x组成的m位数字.请计算,以下式子是否成立: F(x,m) mod k ≡ c Input 第一行一个整数T,表示T组数据. 每 ...
- 2016百度之星 初赛2A ABEF
只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...
- HDU 5690:2016"百度之星" - 初赛 All X
原文链接:https://www.dreamwings.cn/hdu5690/2657.html All X Time Limit: 2000/1000 MS (Java/Others) Mem ...
- 2016"百度之星" - 初赛(Astar Round2A)HDU 5695 拓扑排序+优先队列
Gym Class Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- 2016百度之星 初赛2B ACEF
做了1001 1003 1005 1006 看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=702 交题:http://acm ...
- 2016"百度之星" - 初赛(Astar Round2A) 1004 D Game 区间DP
D Game Problem Description 众所周知,度度熊喜欢的字符只有两个:B 和D. 今天,它发明了一个游戏:D游戏. 度度熊的英文并不是很高明,所以这里的D,没什么高深的含义,只 ...
- 2016"百度之星" - 初赛(Astar Round2B)
Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有n个数,每个数都是独一无二的,求出每个数在 ...
- 2016"百度之星" - 初赛(Astar Round2A)
题目链接: http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=701 1001 : 矩阵快速幂 #include <iostre ...
随机推荐
- 佛山Uber优步司机奖励政策(12月14日到12月20日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 聊聊WS-Federation(test)
本文来自网易云社区 单点登录(Single Sign On),简称为 SSO,目前已经被大家所熟知.简单的说, 就是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 举例: 我们 ...
- javaweb(六)——Servlet开发(二)
一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...
- Ubuntu16.04比较好的一系列软件安装介绍
https://blog.csdn.net/Gerald_Jones/article/details/80784976
- [转]JS私有化的实现——稳妥构造函数
所谓稳妥对象, 指的是没有公共属性, 而且其方法也不引用this的对象.稳妥对象函数遵循与寄生构造函数类似的模式, 但有两点不同: 一是新创建对象的实例方法不引用this: 二是不使用new操作符调用 ...
- Android 简介
一 Android起源 android: 机器人 android是google公司开发的基于Linux2.6的免费开源操作系统 2005 Google收购 Android Inc. 开始 Dalvik ...
- word record 01
词义默认包括发音 coil /kɔɪl/ 发音(kuo you) collage /kə'lɑʒ/ 发音(ke la shi) colleague /'kɑliɡ/ 发音 (ka li ge) com ...
- yii的学习笔记 基本结构 自用
Yii 学习笔记 W:YII是什么? Q:Yii 是一个基于组件的高性能 PHP 框架,用于快速开发大型 Web 应用.它使Web开发中的 可复用度最大化,可以显著提高你的Web应用开发速度.Yii ...
- python leveldb 文档
标签(空格分隔): python leveldb import leveldb db = leveldb.LevelDB('./db') db.Put('hello', 'world') print ...
- 七:HDFS Permissions Guide 权限
1.权限模式 简单:启动HDFS的操作系统用户即为超级用户,可以通过HADOOP_USER_NAME指定 kerberos: 2.group mapping 组列表由grou ...