資料規模和約定
按題目描述所示。
問題描述
卡城著名的格林堡博物館是加拿大西部最大的博物館,展品涵蓋了藝術、文化史以及礦物學。如今乙個全新的展區正在被布置,它是專門為你這樣傑出的程式猿(媛)打造的。不幸的是,由於空間不足,博物館打算建造一棟新的建築來重新安置這個展區。
新的建築的尺寸和容量將不同於原始的建築,但是所有樓層的設計都是直角多邊形。乙個直角多邊形是內角均為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 而是去計算...