usaco3 1 5形成的區域

2021-06-22 20:43:56 字數 1491 閱讀 4139

以逆序來進行放置,即n to 1。逆序的好處在於放置乙個矩形後,俯視看到的就是最終俯視該矩形應該看到的。因為擋著它的矩形在之前已經放置好了,所以可直接統計,為遞迴創造了條件。每放乙個矩形,可以想象成將其扔入一密度很大的海水底部,海分成了n層,然後矩形開始向上浮。在上浮過程中若碰撞到其他的矩形則斷裂成幾個小矩形,繼續上浮,直到浮出水面。於是想到用個遞迴來模擬上浮過程。

procedure cover(l,r,s,d,k,col:

integer

); begin

while

(k<=n)

and(

(r<=x1[k])or

(l>=x2[k])or

(d<=y1[k])or

(s>=y2[k]))

do inc(k);

if k>n then

begin ans[col]

:=ans[col]

+(r-l)

*(d-s); exit; end;

if l<=x1[k]

then

begin cover(l,x1[k]

,s,d,k+

1,col); l:=x1[k]; end;

if r>=x2[k]

then

begin cover(x2[k]

,r,s,d,k+

1,col); r:=x2[k]; end;

if s<=y1[k]

then

begin cover(l,r,s,y1[k]

,k+1

,col); s:=y1[k]; end;

if d>=y2[k]

then

begin cover(l,r,y2[k]

,d,k+

1,col); d:=y2[k]; end;

end;

(主要是對於這一題沒有深刻的理解,如果對圖能更好的深入透析,這就寫得出來了。這個方法速度很快)

#include

#include

#include

#include

#include

using namespace std;

int ans[3000],n;

struct sfaftu[1010];

void piaofu(int x1,int x2,int y1,int y2,int k,int col);

int main()

for(int i=n;i>=0;i--)

for(int i=1;i<=2500;i++)

if(ans[i]!=0)cout<=tu[k].x2||x2<=tu[k].x1||y1>=tu[k].y2||y2<=tu[k].y1)&&k<=n)k++;

if(k==n+1)

if(x1tu[k].x2)

if(y1tu[k].y2)

}

3 15學習計畫

1 做一套計算機二級題 3 背英語單詞 2 計畫完成度 1 我平時可以在手機上做二級的選擇題,所以就節省時間,在電腦上做題的時候,就只做了操作題部分。這個word有些 呢,很多都是沒見過的操作哦,而且操作的量很大。本來的檔案,沒有修改時,是有47頁的,要求我們把書稿中的包含 級別的標題,分別用 一級...

315前侃服務

相信很多人在購買實物產品時都會關注後續的服務,畢竟面對產品在使用週期內出現的各種問題,消費者不可避免地需要與生產廠家或銷售商溝通解決,而在虛擬經濟日益成長的網際網路領域,出現了越來越來的爭執,而消費者在面對服務提供者維權時基本是兩眼一抹黑,這塊也沒有可參考的法律法規,完全由服務提供者一言而決。下面說...

USACO 修理牛棚

同樣是一道貪心題,我的思路是用乙個陣列存下所有的空擋,對空擋進行排序,然後再在總長度中減去前m 1 大的空檔長度。關鍵還是理解題意。貌似洛谷 oj不支援 int min 之類的。還有要對初始資料排一次序,害我 wa了一次。include include includeusing namespace ...