CTSC 2000 冰原探險

2022-08-28 10:12:12 字數 2375 閱讀 8914

傳說中,南極有一片廣闊的冰原,在冰原下藏有史前文明的遺址。整個冰原被橫豎劃分成了很多個大小相等的方格。在這個冰原上有n個大小不等的矩形冰山,這些巨大的冰山有著和南極一樣古老的歷史,每個矩形冰山至少佔據乙個方格,且其必定完整地佔據方格。冰山和冰山之間不會重疊,也不會有邊或點相連。以下兩種情況均是不可能出現的:

acm探險隊在經過多年準備之後決定在這個冰原上尋找遺址。根據他們掌握的資料,在這個冰原上乙個大小為一格的深洞中,藏有乙個由史前人類製作的開關。而唯一可以開啟這個開關的是乙個佔據接近一格的可移動的小冰塊。顯然,在南極是不可能有這樣小的獨立冰塊的,所以這塊冰塊也一定是史前文明的產物。他們在想辦法把這個冰塊推到洞裡去,這樣就可以開啟一條通往冰原底部的通道,發掘史前文明的秘密。冰塊的起始位置與深洞的位置均不和任何冰山相鄰。這個冰原上的冰面和冰山都是完全光滑的,輕輕的推動冰塊就可以使這個冰塊向前滑行,直到撞到一座冰山就在它的邊上停下來。冰塊可以穿過冰面上所有沒有冰山的區域,也可以從兩座冰山之間穿過(見下圖)。冰塊只能沿網格方向推動。

請你幫助他們以最少的推動次數將冰塊推入深洞中。

輸入格式:

輸入檔案第一行為冰山的個數n (1<=n<=4000),第二行為冰塊開始所在的方格座標x1,y1,第三行為深洞所在的方格座標x2,y2,以下n行每行有四個數,分別是每個冰山所佔的格仔左上角和右下角座標xi1,yi1,xi2,yi2

輸出格式:

輸出檔案僅包含乙個整數,為最少推動冰塊的次數。如果無法將冰塊推入深洞中,則輸出0。

輸入樣例#1:

2

1 15 5

1 3 3 3

6 2 8 4

輸出樣例#1:

3
1<=n<=4000

首先,這道題就是乙個找路徑的問題。要用bfs是一定的。問題就是這道題有乙個特殊的推法,物體知道撞到冰山才會停下。那麼我們每次搜尋就要判斷,下一次撞到的第乙個冰山是哪個。做法也就是列舉每個冰山,然後檢查是否能撞到,然後用擂台來比較最接近冰塊的冰山。

幾個卡點:

如果最後沒有移動到冰山別忘了輸出0……

要分清題目當中l_u和r_d分別是什麼方向上的最值。要求最大值,就要賦值為極小值,要求最小值,就要賦值極大值。

輸出的時候,不要忘了再加上1.

1 #include 2

using

namespace

std;

3const

int maxn = 10000, maxint = 0x7fffffff;4

struct

node5;

8 queueq;

9struct

cor10

ice, hole, ml[maxn], mr[maxn];

13int

n;14

bool vis[maxn << 2

];15

intmain()

16);

23 q.push((node));

24while (!q.empty())

2539

if (lum && !vis[lum << 2

])40 vis[lum << 2] = true, q.push((node));

41if (rdm && !vis[rdm << 2|1

])42 vis[rdm << 2|1] = true, q.push((node));

43if (temp.x == hole.x && r_d <= hole.y && hole.y <=l_u)

4448}49

else

5059

if (lum && !vis[lum << 2|2

])60 vis[lum << 2|2] = true, q.push((node));

61if (rdm && !vis[rdm << 2|3

])62 vis[rdm << 2|3] = true, q.push((node));

63if (temp.y == hole.y && r_d <= hole.x && hole.x <=l_u)

6468}69

}70 cout << 0

<

71return0;

72 }

ctsc2010 星際旅行

題意很簡單 給定一棵樹,問從根分別走到每個節點的最長路程,其中每個點給定lim,即最多從該點出發lim次,保證lim大於等於該點的度數。特別 鳴謝 ldl在他的模擬題中出了這道題。當題解講這要用樹形dp解網路流模型時,都被驚異了,完全沒有想到網路流,也完全沒有必要網路流,atm在考場上直接有樹形dp...

CTSC2018 混合果汁

為何要用整體二分,整體二分應該怎樣二分,和 poi2011 met meteors十分相像,這裡就不再重複。那麼對於乙個顧客來講,如果當前的區間總份數小於他想要的份數,或者是區間最小 大於他能接受的最大 就把該顧客劃分到右區間,如若滿足則劃分到左區間。想要和 poi2011 met meteors一...

CTSC2010 效能優化

ctsc2010 效能優化 迴圈卷積快速冪 兩個注意點 n 1不是2 k p 1形式,任意模數又太慢?n 2 k1 3 k2 5 k3 7 k4 多路分治!深刻理解fft運算本質 分治,推式子得到從下往上的迭代公式 最後求的是w n i的點值 快速冪 迴圈卷積快速冪比較特殊,就是g f,n的項的係數...