各種小的 dp (精)

2022-06-27 02:57:09 字數 924 閱讀 7685

q~ 拋一枚硬幣 n 次,每次可能是正面或者反面向上,求沒有連續超過 k 次硬幣向上的方案數

a :dp[ i ] 表示到 i 位置的方案數,

1 . 當 i < k 時, dp[i] = dp[i-1]*2

2 . 當 i = k 時, dp[i] = dp[i-1]*2 - 1

3. 當 i > k 時, dp[i] = dp[i-1]*2 - dp[i-k-1]

ll n, k;

ll dp[maxn];

void solve()

ll ans = (res-dp[n]+mod)%mod;

printf("%lld\n", ans);

}

q~ 有三種字母, 乙個長度為 n 的序列的每乙個位置只可能是這三種字母,但要求連續的三個位置不能同時出現這三種,求方案數

a :dp[i][0] 表示 i 位置與 i-1 位置相同的方案數, dp[i][1] 表示 i 位置與 i-1 位置不同的方案數

法1 : 可以直接貪心,低的時候就買,高的時候就賣, o(n)

法2 : 可以 dp,dp[ i ][0] 表示第 i 天的時候手裡沒有**的最大利潤, dp[i][1] 表示第 i 天手裡有**的最大利潤 

dp[i][0] = max(dp[i-1][0], dp[i-1][1]+prices[i]);

dp[i][1] = max(dp[i-1][1], dp[i-1][0]-prices[i]);

各種小技巧

在乙個單調的陣列vv中判斷是否有 l r的其中乙個數。二分找到 大於等於l 的下標 cc 二分找到大於 r 的下標dd 如果cc dd那麼就不存在 int cc lower bound vv.begin vv.end l vv.begin int dd upper bound vv.begin vv...

精 google 大會小總結

1 kotlin 已經有50 的開發在使用了,趕緊去學習吧,kotlin將會是google 的第一開發語言 2 人工智慧方面google 將會更多的去涉及到,tensorflow,一定要去看看,google 機器學習的官方的文件 3 google 的語音識別,已經將雲端的識別放到了本地,之前需要10...

Python的各種小應用

在檔案頭加上 coding utf 8 這一行就可以用中文注釋了 二 python中解除安裝django cd usr local lib python2.7 dist packages 然後進入root許可權,刪除django的相關版本 三 在python下面使用mysql一定要記得安裝mysql...