脫水縮合
(merge.c/cpp/pas)
【題目描述】
fqk 退役後開始補習文化課啦, 於是他開啟了生物必修一開始複習
蛋白質,他回想起了氨基酸通過脫水縮合生成肽鍵,具體來說,乙個
氨基和乙個羧基會脫去乙個水變成乙個肽鍵。於是他腦洞大開,給你
出了這樣一道題:
fqk 將給你 6 種氨基酸和 m 個脫水縮合的規則,氨基酸用
' ' , ' ' , ' ' , ' ' , ' ' , ' ' f e d c b a 表示,每個規則將給出兩個字串 t s, ,其中
1 | | , 2 | | t s ,表示 s 代表的兩個氨基酸可以通過脫水縮合變成 t 。然後
請你構建乙個長度為 n ,且僅由 ' ' , ' ' , ' ' , ' ' , ' ' , ' ' f e d c b a 構成的氨基酸序列,
如果這個序列的前兩個氨基酸可以進行任意一種脫水縮合, 那麼就可
以脫水縮合,脫水縮合後序列的長度將 1 ,這樣如果可以進行 1 n 次
脫水縮合,最終序列的長度將變為 1 ,我們可以認為這是乙個蛋白質,
如果最後的蛋白質為 ' 'a , 那麼初始的序列就被稱為乙個好的氨基酸序
列。 fqk 想讓你求出有多少好的氨基酸序列。
注:題目描述可能與生物學知識有部分偏差(即氨基酸進行脫水
縮合後應該是肽鏈而不是新的氨基酸),請以題目描述為準。
【輸入格式】
第一行兩個整數 q n, 。
接下來 q 行,每行兩個字串 t s, ,表示乙個脫水縮合的規則。
【輸出格式】
一行,乙個整數表示有多少好的氨基酸序列。
【輸入樣例】
3 5ab a
cc c
ca a
ee c
ff d
【輸出樣例】
4【樣例解釋】
一共有四種好的氨基酸序列,其脫水縮合過程如下:
"abb" "ab" "a"
"cab" "ab" "a"
"cca" "ca" "a"
"eea" "ca" "a"
【資料範圍】
對於 % 100 的資料, 36 , 6 2 q n 。資料存在梯度。
【時空限制】
對於每個測試點,時間限制為 s 2 ,空間限制為 mb 512 。
思路:純搜尋題
我們從"a"開始搜尋,每次搜到長度等於n的序列就return
不需要判斷這個序列是否合法
因為就是從"a"出來的
這個序列一定合法的
唯一需要判定的就是是否重複
判斷是否重複最好用bfs寫
而且這個題的資料範圍特別小
但是當時腦抽不知道怎麼著就寫了個dfs
按理說dfs是能過的
但是腦子又抽了一下
判斷還放在了return的後面
天啊,50分就這麼沒了
要不是這資料水我就爆零了
這告訴我們腦子是個好東西
所以以後寫搜尋一定要先判斷是否重複
來,上**:
(附兩個**,乙個是dfs(雖然標解就是dfs),另乙個是bfs)
dfs:
#include#include#include
#include
#include
using
namespace
std;
struct
node ;
struct node edge[40
];int
n,q,num;
long
long
int ans=0
;string
cur,kol;
maphead;
mappd;
void edge_add(string
from,string
to)void dfs(string kcc,int
now)
string kll=kcc;
for(int i=head[kcc[kcc.length()-1]];i!=0;i=edge[i].next)
}int
main()
dfs("a
",0);
cout
return0;
}
bfs:
#include#include#include
#include
#include
#include
using
namespace
std;
struct
node ;
struct node edge[1000
];int
n,q,num;
long
long
int ans=0
;string
cur,kol;
maphead;
mappd;
queue
que;
void edge_add(string
from,string
to)void
bfs()
}que.pop();
}}int
main()
bfs();
cout
return0;
}
mysql大文字搜尋
mysql內建了三種儲存引擎,分別是innodb,myisam和memory,一般情況下,mysql5.x之後的版本都是使用innodb儲存引擎.三種引擎的對比 innodb 支援事務操作 支援自動增加列 具有行級鎖定 myisam 不支援事務,也不支援外來鍵,但是訪問速度快 對大文字搜尋效能較好 ...
資料大搜尋 UESTC 59
寫乙個程式,把乙個字串中的數字子串行找出來並轉換成十進位制整數輸出。input 第一行是整數nn,表示測試的資料組數,下面是nn行無空格的字串 長度不超過200 題目保證字串中含的整數字數小於99位,不考慮負數情形。output 每一行輸入對應一行輸出,一行中若有多個資料,每個資料後有乙個空格。sa...
資料大搜尋 UESTC 59
uestc 59 寫乙個程式,把乙個字串中的數字子串行找出來並轉換成十進位制整數輸出。input 第一行是整數nn,表示測試的資料組數,下面是nn行無空格的字串 長度不超過200 題目保證字串中含的整數字數小於99位,不考慮負數情形。output 每一行輸入對應一行輸出,一行中若有多個資料,每個資料...