UESTC 771 最大容积(前缀后缀和)
题目链接:http://acm.uestc.edu.cn/#/problem/show/771
最大容积
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
在 xx 轴的正整数坐标 1,2,⋯,N1,2,⋯,N 上分别竖立着一条线段,高度分别为 h1,h2,⋯,hNh1,h2,⋯,hN。这样只要我们任意选择两条线段 i,ji,j,再加上 xx 轴就能围成一个水槽了(只不过是二维的)。
由于短板效应,这个水槽的容积应该是
那么选哪两条线段与 xx 轴构成的水槽容积最大呢?
Input
输入一共两行:
第一行是一个正整数 NN,代表一共有多少条线段,其中 2<N<1062<N<106;
第二行是 NN 个正整数 h1,h2,⋯,hNh1,h2,⋯,hN,分别表示线段 1,2,⋯,N1,2,⋯,N 的高度,其中 0≤hi<1030≤hi<103。
Output
输出最大容积。
Sample input and outpu
| Sample Input | Sample Output | 
|---|---|
5  | 
6  | 
题解:今天和老房讨论了这个题,方法是枚举左端点,优化右区间。关键是怎么优化。二分不行,线段树搞不通,最后老房灵机一动,想出用后缀和来搞,再次发现前缀和后缀和真的真的很神奇,后缀和记录大于等于某个数字的最远位置,然后枚举左区间,即使每个高度非常高,复杂度也就n+h.然后发现这个题标程有问题。看下文。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 1e6+;
int arr[maxn];
int h[];
int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&arr[i]);
for(int i=n;i>=;i--)
{
if(!h[arr[i]])
{
int cur = arr[i];
while(h[cur]==&&cur>)
{
h[cur] = i;
cur--;
}
}
}
int ans = ;
for(int i=;i<=n;i++)
{
int cur = abs(h[arr[i]]-i)*arr[i];
ans = max(ans,cur);
}
printf("%d\n",ans);
return ;
}
卷珠帘
这份代码ac了,然后他们给我发了一组数据,5 5 4 3 2 1输出的是0,因为还需要从前往后扫一遍,,,QAQ
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 1e6+;
int arr[maxn];
int h2[];
int h1[];
int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&arr[i]);
for(int i=n;i>=;i--)
{
if(!h2[arr[i]])
{
int cur = arr[i];
while(h2[cur]==&&cur>)
{
h2[cur] = i;
cur--;
}
}
}
for(int i=;i<=n;i++)
{
if(!h1[arr[i]])
{
int cur = arr[i];
while(h1[cur]==&&cur>)
{
h1[cur] = i;
cur--;
}
}
}
int ans = ;
for(int i=;i<=n;i++)
{
int cur = abs(h2[arr[i]]-i)*arr[i];
ans = max(ans,cur);
}
for(int i=n;i>=;i--)
{
int cur = abs(h1[arr[i]]-i)*arr[i];
ans = max(ans,cur);
}
printf("%d\n",ans);
return ;
}
卷珠帘
UESTC 771 最大容积(前缀后缀和)的更多相关文章
- POJ 2752 (KMP 所有可能长度的前缀后缀) Seek the Name, Seek the Fame
		
题意: 求一个字符串的相同前缀后缀的所有可能的长度,这里该字符串其本身也算自己的前缀和后缀. 分析: 我们知道next数组的性质是,该字符之前的字符串的最大相同前缀后缀. 既然知道了最大的,即next ...
 - hdoj 2594 Simpsons’ Hidden Talents 【KMP】【求串的最长公共前缀后缀】
		
Simpsons' Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
 - 1280 前缀后缀集合(map)
		
1280 前缀后缀集合 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 一个数组包含N个正整数,其中有些是重复的.一个前缀后缀集是满足 ...
 - kuangbin专题七 HDU1540 Tunnel Warfare (前缀后缀线段树)
		
During the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast a ...
 - jQuery EasyUI/TopJUI基本的数字输入框(保留两位小数,带前缀后缀...)
		
jQuery EasyUI/TopJUI基本的数字输入框(保留两位小数,带前缀后缀...) numberbox(数值输入框) HTML required:必填字段,默认为false:prompt:显示 ...
 - Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] D "Or" Game 枚举+前缀后缀
		
D. "Or" Game ...
 - B. Marvolo Gaunt's Ring  前缀后缀
		
B. Marvolo Gaunt's Ring 这种一般只有三个的都可以处理前缀和后缀,再枚举中间这个值. 这个和之前写过的C. Four Segments 前缀后缀 处理方式很像. #include ...
 - FIX_前缀后缀_未提交
		
问题 B: FIX 时间限制: 1 Sec 内存限制: 64 MB提交: 38 解决: 11[提交][状态][讨论版] 题目描述 如果单词 X 由单词 Y 的前若干个字母构成,我们称 X 是 Y ...
 - Simpsons’ Hidden Talents - HDU 2594(求相同的前缀后缀)
		
题目大意:给你两个字符串,找出一个最大的子串,这个子串要是前面串的前缀并且是后面串的后缀........... 分析:next的简单运用吧,可以把两个串进行合并,中间加一个不能被匹配的字符,然后求 ...
 
随机推荐
- 授权给指定用户,使用navicat在其他ip都可以连接linux服务器上的mysql库
			
grant all privileges on ao.* to 'tony'@'localhost' identified by '123456'; 在ao库中所有表. 同意 ,授权 给ton ...
 - Android数据库--Sqlcipher的使用(二)
			
1.使用Sqlcipher对数据库加密,并结合ORM框架LitePal进行使用. 2.对LitePal的使用我就不在讲解了,大家可以参考下面七篇博客: http://blog.csdn.net/guo ...
 - 解决ORA-00904: invalid identifier标识符无效
			
方法/步骤 1 大部分情况下,此错误是由于引用了不存在的列名导致的.比如select name from Studtent 当studeng表中无name列时,系统就会报此错误. 2 解决思路是,确定 ...
 - The project target (Android 6.0) was not properly loaded或者The rendering target (Android 6.0) is still loading.
			
第一步:在project上右键选择Properties,然后选择Android, 然后在Project Build Target那里选择其他的Target试试: 第二步: 我选了6.0之后,就有菜单可 ...
 - MULE-ET0 、 ET1、ET2、PT1、PT2
			
设计验证阶段中的五个样车试制概念 骡子车( mule car ) ET0 第一轮设计工程样车试制 ET1 第二轮设计工程样车试制 ET2 第一轮产品工装样车试制 PT1 第二轮产品工装样车试制 PT2 ...
 - 前端 MVC 变形记
			
背景: MVC是一种架构设计模式,它通过关注点分离鼓励改进应用程序组织.在过去,MVC被大量用于构建桌面和服务器端应用程序,如今Web应用程序的开 发已经越来越向传统应用软件开发靠拢,Web和应用之间 ...
 - redis学习一
			
一.简介: 在过去的几年中,NoSQL数据库一度成为高并发.海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机.然而在众多产品中能够脱颖而出的却屈指可数,如Redis.MongoDB ...
 - E212:无法打开并写入文件
			
用vi编辑文件是 老师出现这样的错误 有些文件 需要root权限才能修改 切换成root权限就行了
 - VB 要求对象
			
vDoc = WebBrowser1.Document '提示要求对象 Set vDoc = WebBrowser1.Document '正确执行
 - oracle一次删除多张表
			
通过拼接sql语句来完成 例如有如下个表 想一次性删除,执行如下语句: select 'drop table '||table_name ||';' as dropsql from USER_TABL ...