POJ 3044单调栈 题意: 思路: 单调栈 // by SiriusRen #include <stack> #include <cstdio> using namespace std; stack<int>s; int n,w,ans=0,xx,yy; int main() { scanf("%d%d",&n,&w); for(int i=1;i<=n;i++) { scanf("%d%d",&xx,&yy); st:if(yy&&(s.empty()||s.top...
【POJ3044】City Skyline-单调栈 测试地址:City Skyline 题目大意:给定一个直方图轮廓,问最少需要多少个矩形能够拼出这个轮廓(矩形可以相交)? 做法:本题需要用到单调栈。 对每个点求出以该点为最小值的最大区间,我们发现题目要求的就是除了元素0外,有多少本质不同的区间。 我们把高度逐一入栈,当一个元素出栈...
[USACO2005][POJ3044]City Skyline(贪心+单调栈) 题目:http://poj.org/problem?id=3044 题意:以坐标的形式给出一张图,表示一些楼房的正视图,求出楼房的最少个数。 分析:和小学常做的立方体问题很像,很容易想到一个贪心方法,那就是尽量把矮的楼房放在高的楼房的前面,即连续的等高的一些"X"我们把它视为...
题意理解很重要,本题关键在于横着楼的判定,他should后面元素的影响,所以我们需要一个数据结构来保存它,那我们不能让跟它一样高的楼层进来,因为它们是一层楼。我们维护一个递增的单调栈,(进栈元素就是楼层),如果当前栈顶元素大于要入栈的元素,那么此时该栈顶元素位置就确定了(因为比它低的点的正视图,不能再被...
POJ 3044 姑且算作贪心吧,从左往右遍历,对于每一个从点,如果它的那个高度没有被其他木板占据,就让它尽可能向右延伸,最后看有多少次这种伸展操作。可以利用像并查集一样的结构来储存每个点最多能延伸到多远。 View Code
注意:::POJ1151上G++要用%.2f才能过!%.2lf WA! #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> using namespace std; const int N=101; const double eps=1e-6; double ans=0,x[N<<1],y[N<<1],pos[N][4]; bool hash[N<<1][N<<1]; int...
[codevs3044][POJ1151]矩形面积求并 试题描述 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入 可能有多组数据,读到n=0为止(不超过15组) 每组数据第一行一个数n,表示矩形个数(n<=100) 接下来n行每行4个实数x1,y1,x2,y1(0 <= x1 < x2 <= 100000;0 <= y1 < y2 <= 100000)...
POJ 3254 Corn Fields(状态压缩DP) Corn Fields Description Farmer John has purchased a lush new rectangular pasture composed ofMbyN(1 ≤M≤ 12; 1 ≤N≤ 12) square parcels. He wants to grow some yummy corn for the cows on a number of squares. Regrettably, some of the squares are ...