日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2014 Super Training #10 D 花生的序列 --DP

發(fā)布時(shí)間:2024/10/12 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2014 Super Training #10 D 花生的序列 --DP 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原題: FZU 2170?http://acm.fzu.edu.cn/problem.php?pid=2170

這題確實(shí)是當(dāng)時(shí)沒讀懂題目,連樣例都沒想通,所以沒做了,所以還是感覺這樣散漫的做不好,有些題目明明很簡單,卻因?yàn)闆]看懂而放棄了,甚至去玩了,這樣達(dá)不到太大的效果。

解法:

定義: dp[i][j]:前i個(gè)字母中有j個(gè)是屬于第一個(gè)序列的標(biāo)號(hào)方案種數(shù)。

則當(dāng)遇到'B'時(shí),因?yàn)橐獫M足WB依次間歇出現(xiàn),所以前面屬于第一個(gè)序列的個(gè)數(shù)應(yīng)該為奇數(shù),即j&1時(shí)轉(zhuǎn)移。當(dāng)屬于第二個(gè)序列的個(gè)數(shù)為奇數(shù)時(shí)((i-j)&1)也要轉(zhuǎn)移,因?yàn)檫@個(gè)B有可能屬于第二個(gè)序列。當(dāng)遇到'W'時(shí)反之。

用滾動(dòng)數(shù)組節(jié)省空間。

代碼:

#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <algorithm> #define Mod 1000000007 using namespace std; #define N 6007int dp[2][N]; char ss[N];int main() {int n,i,j;int now;int t;scanf("%d",&t);while(t--){scanf("%d",&n);scanf("%s",ss);memset(dp,0,sizeof(dp));dp[0][0] = 1;for(i=0,now=1;i<2*n;i++,now=1-now){memset(dp[now],0,sizeof(dp[now]));if(ss[i] == 'B'){for(j=0;j<=n;j++){if(j&1)dp[now][j+1] = (dp[now][j+1]+dp[i&1][j])%Mod;if((i-j)&1)dp[now][j] = (dp[now][j]+dp[i&1][j])%Mod;}}else{for(j=0;j<=n;j++){if((j&1) == 0)dp[now][j+1] = (dp[now][j+1]+dp[i&1][j])%Mod;if(((i-j)&1) == 0)dp[now][j] = (dp[now][j]+dp[i&1][j])%Mod;}}}printf("%d\n",dp[0][n]);}return 0; } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/whatbeg/p/3832266.html

總結(jié)

以上是生活随笔為你收集整理的2014 Super Training #10 D 花生的序列 --DP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。