hihaCoder1042 跑馬圈地(列舉)

2021-08-02 13:48:49 字數 1781 閱讀 5389

時間限制:

10000ms

單點時限:

1000ms

記憶體限制:

256mb

一覺醒來,小hi穿越回了古代!由於破敵有功,大汗賞賜小hi可以在敵人的草原上跑馬圈地:一天之內騎馬圍住的草原以後就是小hi的牧場。但是令小hi頭疼的是,敵人的草原上有一塊臭水塘。小hi不能騎馬走進臭水塘裡,並且即使小hi的騎馬路徑圍住了臭水塘,小hi的牛馬也不能在臭水塘裡放牧。

為了更科學地圈地,小hi對這個問題進行了簡化和抽象:(1)敵人的草原是一塊n×m的方格矩陣,(2)騎馬的路徑是沿著方格邊緣的一段封閉折線,(3)臭水塘是矩陣中的一塊矩形,(4)騎馬的路徑周長不超過l。小hi想知道自己最大能圈住多大面積的草原(臭水塘的面積不計入在內)。

如圖所示:圖1是一條合法的路徑;圖2也是一條合法的路徑,但是圈住的草原面積為0;圖3不是合法的路徑,因為沒有封閉;圖4也不是合法的路徑,因為穿過了水塘。

第一行3個整數:n, m, l (1 <= n, m <= 100, 1 <= l <= 400)

第二行4個整數:l, r, t, b (0 <= l < r <= m, 0 <= t < b <= n)表示水塘的左、右、上、下邊界座標。

小hi最大能圈住的面積

樣例輸入

4 4 8

1 3 1 3

樣例輸出

解題思路:首先我們從某個頂點出發圈出的矩形區域總能獲得最大值。我們都用矩形區域去圈取,在上圖中的第一種情況下,即最右邊和最下邊的路徑有一部分在黑色區域內,此時我們可以將橙色的線移動變成紅色的線,s=s矩-s部分黑。第二種情況下,即最右邊或最下邊的線在黑色區域內,在圖中,我們同樣可以將橙色的線右移,但此時還少兩條邊(未能構成有效路徑),若我們剩下能走的距離l'>=2,即s=s矩-s部分黑,若不能走了,則將最下面的橙線向下移動更不可能,只能向上移動,於是變成了情況1。

還有兩種情況,都不經過黑色區域,s=s矩,s=s矩-s全部黑(包括了黑色區域),所以我們只要從某頂點開始從小到大列舉所有的矩形區域,然後列舉另外3個頂點,就能得出答案。

#include #include #include #include #include #include #include #include #include #include #include using namespace std;  

typedef long long ll;

const int n = 1007;

const int m = 11;

const int inf = 0x3fffffff;

const int mod = 1e9+7;

const double pi = acos(-1.0);

const double sm = 1e-9;

int n,m,l;

int cal( int l , int r , int t , int b )

if(i>l&&i<=r&&j>t&&j<=b)

if(i>1&&ib)

if(j>t&&jr)

if(i>=r&&j>=b)

ans = max(ans,s);

} }return ans;

}int main()

return 0;

}

10 4 訪客名單

編寫乙個while迴圈,提示使用者輸入其名字。使用者輸入其名字後,在螢幕上列印一句問候語,並將一條訪問記錄新增到檔案guest book.txt中。確保這個檔案中的每條記錄都獨佔一行。with open e guest book.txt w as f while true message input...

104 貨倉選址

把a 1 a n 排序,設貨倉建在 x 座標處,x 左側的商店有 p 家,右側的商店有 q 家。若 p q 則把貨倉的選址向右移動 1 單位距離,距離之和就會減小 q p。同理,若 p q 則貨倉的位置想左移動會使距離之和變小。當 p q 時為最優解。因此貨倉應該建在中位數處,即把 a 排序後,當 ...

10 4每日部落格

首先是將資料匯入到hive資料庫中,我使用的是以下的方法 將乙個csv或txt匯入hive 先修改格式為txt 第一行資料為列名,根據列名在hive建表 create table watermelon id string,color string,root string,stroke string,...