點擊查看2016年第七屆藍橋杯B組C/C++決賽題解html
從昏迷中醒來,小明發現本身被關在X星球的廢礦車裏。
礦車停在平直的廢棄的軌道上。
他的面前是兩個按鈕,分別寫着「F」和「B」。3d
小明忽然記起來,這兩個按鈕能夠控制礦車在軌道上前進和後退。
按F,會前進97米。按B會後退127米。
透過昏暗的燈光,小明看到本身前方1米遠正好有個監控探頭。
他必須設法使得礦車正好停在攝像頭的下方,纔有機會爭取同伴的援助。
或許,經過屢次操做F和B能夠辦到。code
礦車上的動力已經不太足,黃色的警示燈在默默閃爍...
每次進行 F 或 B 操做都會消耗必定的能量。
小明飛快地計算,至少要多少次操做,才能把礦車準確地停在前方1米遠的地方。htm
請填寫爲了達成目標,最少須要操做的次數。blog
把0~9這10個數字,分紅多個組,每一個組剛好是一個平方數,這是可以辦到的。
好比:0, 36, 5948721內存
再好比:
1098524736
1, 25, 6390784
0, 4, 289, 15376
等等...資源
注意,0能夠做爲獨立的數字,但不能做爲多位數字的開始。
分組時,必須用完全部的數字,不能重複,不能遺漏。get
若是不計較小組內數據的前後順序,請問有多少種不一樣的分組方案?源碼
有n個棋子A,n個棋子B,在棋盤上排成一行。
它們中間隔着一個空位,用「.」表示,好比:
AAA.BBBstring
如今須要全部的A棋子和B棋子交換位置。
移動棋子的規則是:
AAA.BBB 能夠走法:
移動A ==> AA.ABBB
移動B ==> AAAB.BB
跳走的例子:
AA.ABBB ==> AABA.BB
如下的程序完成了AB換位的功能,請仔細閱讀分析源碼,填寫劃線部分缺失的內容。
#include <stdio.h> #include <string.h> void move(char* data, int from, int to) { data[to] = data[from]; data[from] = '.'; } int valid(char* data, int k) { if(k<0 || k>=strlen(data)) return 0; return 1; } void f(char* data) { int i; int tag; int dd = 0; // 移動方向 while(1){ tag = 0; for(i=0; i<strlen(data); i++){ if(data[i]=='.') continue; if(data[i]=='A') dd = 1; if(data[i]=='B') dd = -1; if(valid(data, i+dd) && valid(data,i+dd+dd) && data[i+dd]!=data[i] && data[i+dd+dd]=='.'){ //若是能跳... move(data, i, i+dd+dd); printf("%s\n", data); tag = 1; break; } } if(tag) continue; for(i=0; i<strlen(data); i++){ if(data[i]=='.') continue; if(data[i]=='A') dd = 1; if(data[i]=='B') dd = -1; if(valid(data, i+dd) && data[i+dd]=='.'){ // 若是能移動... if( ______________________ ) continue; //填空位置 move(data, i, i+dd); printf("%s\n", data); tag = 1; break; } } if(tag==0) break; } } int main() { char data[] = "AAA.BBB"; f(data); return 0; }
X星球的機器人表演拉拉隊有兩種服裝,A和B。
他們此次表演的是搭機器人塔。
相似:
A
B B
A B A
A A B B
B B B A B
A B A B B A
隊內的組塔規則是:
A 只能站在 AA 或 BB 的肩上。
B 只能站在 AB 或 BA 的肩上。
你的任務是幫助拉拉隊計算一下,在給定A與B的人數時,能夠組成多少種花樣的塔。
輸入一行兩個整數 M 和 N,空格分開(0<M,N<500),分別表示A、B的人數,保證人數合理性。
要求輸出一個整數,表示能夠產生的花樣種數。
例如:
用戶輸入:
1 2
程序應該輸出:
3
再例如:
用戶輸入:
3 3
程序應該輸出:
4
LQ市的市民廣場是一個多邊形,廣場上鋪滿了大理石的地板磚。
地板磚鋪得方方正正,就像座標軸紙同樣。
以某四塊磚相接的點爲原點,地板磚的兩條邊爲兩個正方向,一塊磚的邊長爲橫縱座標的單位長度,則全部橫縱座標都爲整數的點都是四塊磚的交點(若是在廣場內)。
廣場的磚單調無趣,卻給跳廣場舞的市民們提供了絕佳的參照物。天天傍晚,都會有大批市民前來跳舞。
舞者每次都會選一塊完整的磚來跳舞,兩我的不會選擇同一塊磚,若是一塊磚在廣場邊上致使缺角或者邊不完整,則沒人會選這塊磚。
(廣場形狀的例子參考【圖1.png】)
如今,告訴你廣場的形狀,請幫LQ市的市長計算一下,同一時刻最多有多少市民能夠在廣場跳舞。
【輸入格式】
輸入的第一行包含一個整數n,表示廣場是n邊形的(所以有n個頂點)。
接下來n行,每行兩個整數,依次表示n邊形每一個頂點的座標(也就是說廣場邊緣拐彎的地方都在磚的頂角上。數據保證廣場是一個簡單多邊形。
【輸出格式】
輸出一個整數,表示最多有多少市民能夠在廣場跳舞。
【樣例輸入】
5
3 3
6 4
4 1
1 -1
0 4
【樣例輸出】
7
【樣例說明】
廣場如圖1.png所示,一共有7塊完整的地板磚,所以最多能有7位市民一塊兒跳舞。
【數據規模與約定】
對於30%的數據,n不超過100,橫縱座標的絕對值均不超過100。
對於50%的數據,n不超過1000,橫縱座標的絕對值均不超過1000。
對於100%的數據,n不超過1000,橫縱座標的絕對值均不超過100000000(一億)。
給定一個 nm 的格點圖,包含 n 行 m 列共 nm 個頂點,相鄰的頂點之間有一條邊。
【圖1.png】給出了一個3*4的格點圖的例子。
若是在圖中刪除部分頂點和其相鄰的邊,如上圖刪除第2行第3列和第3行第1列的頂點後,如【圖2.png】所示。
圖的生成樹指包含圖中的全部頂點和其中的一部分邊,使得任意兩個頂點之間都有由邊構成的惟一路徑。若是兩個生成樹包含有不一樣的邊即被認爲不一樣,則上圖中共有31種不一樣的生成樹,其中a邊不選有10種,a邊選有21種。
給出格點圖中保留的頂點的信息,請計算該圖一共有多少種不一樣的生成樹。
【輸入格式】
輸入的第一行包含兩個整數n, m,用空格分隔,表示格點圖的行數和列數。
接下來n行,每行m個字母(中間沒有分隔字符),每一個字母必然是大寫E或大寫N,E表示對應的頂點存在,N表示對應的頂點不存在。保證存在至少一個頂點。
【輸出格式】
輸出一行,包含一個整數,表示生成樹的個數。答案可能很大,你只須要計算答案除以1000000007的餘數便可。
【樣例輸入】
3 4
EEEE
EENE
NEEE
【樣例輸出】
31
【數據規模與約定】
對於10%的數據,1<=n<=2。
對於30%的數據,1<=n<=3。
對於40%的數據,1<=n<=4。
對於50%的數據,1<=n<=5。
另有20%的數據,1<=n*m<=12。
另有10%的數據,1<=m<=15。
對於100%的數據,1<=n<=6,1<=m<=100000。
資源約定: 峯值內存消耗 < 256M CPU消耗 < 4500ms