uestc poj2559 秋实大哥去打工
//感觉有必要把这题放博客上待复习 刚刚写解题报告的时候发现自己又不会做这题了
//我不会告诉你这题绝对是命题人抄poj2559
这题使用一个单调递增的栈,栈内存储的元素有两个值,一个高度,一个长度。
假如后一个元素的高度比栈顶元素小,那么从栈顶元素一定无法延伸到当前元素,于是乎我们就弹栈来降低栈顶的元素的高度,即把栈顶的元素和下一个元素合并,合并后高度为两者的最小值,宽度为两者加和(其实这就相当于新产生了一种方案)。进行弹栈操作直到栈顶元素小于当前元素,然后当前元素进栈。
弹栈时记录新产生的栈的元素的面积(其实就是新方案的面积),取最大值即为答案。
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<vector>
#include<map>
#include<stack>
#include<string> using namespace std; struct rec{
int h,w;
}; int n;
rec a[];
rec stk[];
int top; int main(){
memset(a,,sizeof(a));
memset(stk,,sizeof(stk));
scanf("%d",&n);
for (int i=;i<=n;i++){
scanf("%d%d",&a[i].w,&a[i].h);
}
top=;
int ans=;
for (int i=;i<=n;i++){
int totw=;
while (top> && stk[top].h>a[i].h){
totw=totw+stk[top].w;
ans=max(ans,stk[top].h*totw);
top--;
}
top++;
stk[top].w=a[i].w+totw;
stk[top].h=a[i].h;
}
while (top>){
ans=max(ans,stk[top].h*stk[top].w);
stk[top-].w=stk[top-].w+stk[top].w;
top--;
}
printf("%d\n",ans);
}
/*
3
3 4
1 2
3 4 3
3 2
10 3
3 3 7
1 2
1 1
1 4
1 5
1 1
1 3
1 3
*/
uestc poj2559 秋实大哥去打工的更多相关文章
- 2015 UESTC 数据结构专题G题  秋实大哥去打工 单调栈
		秋实大哥去打工 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ... 
- UESTC_秋实大哥去打工 2015 UESTC Training for Data Structures<Problem G>
		G - 秋实大哥去打工 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Subm ... 
- CDOJ  1069    秋实大哥去打工    单调栈  下标处理
		E - 秋实大哥去打工 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Submit St ... 
- UESTC 1059 - 秋实大哥与小朋友
		题目链接:http://acm.uestc.edu.cn/#/problem/show/1059 Time Limit: 3000/1000MS (Java/Others) Memory Li ... 
- UESTC 1061 秋实大哥与战争 线段树区间合并
		秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) 男儿何不带吴钩, ... 
- uestc 1073 秋实大哥与线段树 Label:线段树
		秋实大哥与线段树 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) “学习本无底, ... 
- UESTC 1074 秋实大哥搞算数 栈模拟
		秋实大哥搞算数 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ... 
- UESTC - 1057 秋实大哥与花 线段树
		题意 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一个愉悦值. 秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉 ... 
- UESTC - 1057 秋实大哥与花 线段树模板题
		http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板, #define _CR ... 
随机推荐
- spftlayer 安装及简单使用
			1,yum -y install python-pip; pip(Python packet index); 
- Yii2 分页类的扩展和listview引用
			Yii2 本身提供了不错分页选项供用户设置,但是实际项目中我们往往需要复杂一些的分页样式,例如下图所示的效果,上下翻页可用和不可用均用图标来替换. 
- 对每个用户说hello
			#!/bin/bash #对每个用户说hello #用户数 Lines=`wc -l /etc/passwd | cut -d' ' -f1` $Lines`; do echo "Hello ... 
- poj 2229 Sumsets(dp 或 数学)
			Description Farmer John commanded his cows to search . Here are the possible sets of numbers that su ... 
- phpcms加载系统类与加载应用类之区别详解
			<?php 1. 加载系统类方法load_sys_class($classname, $path = ''", $initialize = 1)系统类文件所在的文件路径:/phpcms ... 
- pyqt显示指定范围的数字
			# -*- coding: cp936 -*- # -*- coding: cp936 -*- import sys from PyQt4 import QtCore, QtGui #导入模块 a ... 
- Hopscotch(细节)
			Hopscotch Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit ... 
- Cordova for android怎样在App中处理退出button事件
			项目须要在HTML5 Android App中增加对返回键的处理,发现直接在Activity中加返回键处理代码不起作用,分析cordova源代码发现返回键已经被WebView处理掉了,所以仅仅能在js ... 
- 国内外移动端web适配屏幕方案
			基础知识点 设备像素:设备像素又称物理像素(physical pixel),设备能控制显示的最小单位,我们可以把这些像素看作成显示器上一个个的点. iPhone5的物理像素是640X1136. PS: ... 
- easyui-window
			<div id="win" class="easyui-window" title="My Window" style="w ... 
