uva12265 抓關鍵 矩形利用對角兩點

2021-07-16 04:54:56 字數 663 閱讀 9443

題目要抓住關鍵,這道題的關鍵是通過矩形的左上角定位矩形。

儲存可能的最優解,並進行更新的思想。

一步一步想,要追求邏輯層次,畫出來,不要貪快。例如:行往下遍歷,列往右遍歷,通過遞增計算出來高度,通過乙個陣列儲存可能的解並更新。

利用陣列下標模擬棧。

#include 

#include

using

namespace

std;

const

int maxn = 1000 + 10;

char s[maxn][maxn];

int height[maxn], ans[maxn << 1];

struct rect//表示左上角的當前列和高度

}rect[maxn];

int n, m;

int main()

else

r = rect[top];

ans[r.h + j - r.c + 1]++;}}

}for(int i = 2; i <= m + n; i++)//將結果直接儲存在陣列中,對應的下標進行計數。

if(ans[i]) printf("%d x %d\n", ans[i], i * 2);

}return

0;}

雙重有序,單調棧(販賣土地,uva 12265)

這個單調棧的維護方法有些不一樣。若存在矩形比他高,那麼就把所有比他高的矩形截到和他一樣高,然後按照h c維護單調棧 事實上也就是把除了第乙個被截的矩形全部刪掉,然後再考慮是否刪掉第乙個 新元素不用插入,因為就算插入了也會被刪掉。否則直接維護單調棧,事實上也就是考慮下要不要插入。可以一直保證棧頂是最優...

UVA 木塊問題 101

uva 木塊問題 101,好開森好開森。雖然花了很長時間,不過能一次就ac也是蠻開心的,用c 寫效率就是不錯 疊木塊其實是乙個二維空間,每個木塊都有縱橫座標 include include includeusing namespace std block用於記錄木塊所在位置,x是位於哪一疊木塊,y是...

UVA 非常可樂

include include include include include using namespace std struct node int vis 205 205 注意vis陣列用於 int s,n,m int cup left 3 記錄三個杯子中每個杯子的剩餘狀態 int bfs fo...