藍橋杯 演算法訓練 Glenbow Museum

2021-08-17 21:23:28 字數 1638 閱讀 5100

資料規模和約定

按題目描述所示。

問題描述

卡城著名的格林堡博物館是加拿大西部最大的博物館,展品涵蓋了藝術、文化史以及礦物學。如今乙個全新的展區正在被布置,它是專門為你這樣傑出的程式猿(媛)打造的。不幸的是,由於空間不足,博物館打算建造一棟新的建築來重新安置這個展區。

新的建築的尺寸和容量將不同於原始的建築,但是所有樓層的設計都是直角多邊形。乙個直角多邊形是內角均為90°或270°的多邊形。如果我們記90°角為r(right)、270°角為o(obtuse),那麼乙個只包含r和o的字串能夠粗略的表示乙個直角多邊形。比如,乙個矩形(圖形1)就是最簡單的直角多邊形,它能夠用rrrr來描述(內角按逆時針排列,起始角任意)。同樣地,乙個十字形直角多邊形(圖形2)能夠用rrorrorrorro、rorrorrorror或者orrorrorrorr來描述。這些序列被稱為角序列。

當然,乙個角序列不一定能完全對應乙個形狀的多邊形,因為它沒有說明邊長。並且乙個角序列不一定能描述乙個合法的直角多邊形(比如rrror)。

為了把事情搞得更麻煩,博物館並不接受所有的樓層設計。乙個博物館儲存了許多價值連城的物品,它們必須要被看守著。出於對成本的考慮,乙個樓層最多只能有乙個保安。所以只有滿足以下要求的樓層設計能被接受:存在乙個地點使得乙個保安能監視到整個樓層。因此乙個角序列能被接受,當且僅當它描述了乙個能夠被接受的多邊形。注意圖形2的十字形直角多邊形能夠被站在中心的保安完全監視,所以它是被接受的,因此角序列rrorrorrorro是被接受的,即使它也能夠描述其他不能被乙個保安監視的多邊形。

請幫助新建築的設計師確定有多少給定長度的能夠被接受的角序列。

輸入格式

輸入檔案包含多組測試資料。每組資料一行,包含乙個正整數 l (1 <= l <= 1000),表示給定的角序列長度。

輸入檔案以僅包含0的一行結束。

輸出格式

對於每一組資料,輸出一行,包含測試資料編號(從1開始),之後為給定長度的被接受的角序列的個數。具體格式參考樣例輸出。

樣例輸入4

6 0樣例輸出

如上圖所示:可以的到 r 的數量為r=(n+4)/2 ;o的數量為o=r-4=n-r;

考慮到o不能相鄰,則原問題可以轉換為一道排列問題,即在數量r個r中插入數量為o的o。由於頭和尾同樣不能同時為o,則需要分情況討論:

開頭為r,則sum+= c ( r , o ) =c ( ( n + 4 ) / 2 , 4 )

開頭為o,則sum+= c ( r - 1 , o-1 ) =c ( ( n + 2 ) / 2 , 4) 

#include #include #include #define ll long long

using namespace std;

ll c(ll x,ll y)

int main()

ll r=(n+4)/2,o=n-r;

cout<

cout<

}return 0;

}

藍橋杯 演算法訓練 Lift and Throw

演算法訓練 lift and throw 時間限制 3.0s 記憶體限制 256.0mb 問題描述 給定一條標有整點 1,2,3,的射線.定義兩個點之間的距離為其下標之差的絕對值.laharl,etna,flonne一開始在這條射線上不同的三個點,他們希望其中某個人能夠到達下標最大的點.每個角色只能...

藍橋杯 演算法訓練 數列

題目 演算法訓練 數列 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定乙個正整數k 3 k 15 把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k 3時,這個序列是 1,3,4,9,10,12,13,該序列實際上就是 3 0,31,3 0 31,3 2,...

(藍橋杯)演算法訓練 階乘

問題描述 乙個整數n的階乘可以寫成n 它表示從1到n這n個整數的乘積。階乘的增長速度非常快,例如,13 就已經比較大了,已經無法存放在乙個整型變數中 而35 就更大了,它已經無法存放在乙個浮點型變數中。因此,當n比較大時,去計算n 是非常困難的。幸運的是,在本題中,我們的任務不是去計算n 而是去計算...