如果乙個dp的狀態轉移過程中同時需要記錄兩個物品的狀態,那麼有時可以通過記錄這兩個物品狀態的差值的方式來進行記錄,可以將dp陣列壓掉一維
d p[
i][j
][k]
[0/1
]dp[i][j][k][0/1]
dp[i][
j][k
][0/
1]表示位於座標 (i,
j)
(i, j)
(i,j
) 時小a
比uim
多吸的魔液數為 k
kk, 且吸收此格魔液的人物為小a
(0)
(0)(0
) /uim
(1)
(1)(1
) 時的方案數
高畫質無碼 標程如下:
這題我還被卡常了,mmp#include
#include
#define maxn 805
#define maxk 20
#define mod 1000000007
#define mod(x, y) (((x) + (y)) % (y))
using
namespace std;
int n, m, k0;
int a[maxn]
[maxn]
;int dp[maxn]
[maxn]
[maxk][2
];long
long ans;
intmain()
for(
int i =
1; i <= n;
++i)
for(
int j =
1; j <= m;
++j)
ans +
= dp[i]
[j][0]
[1], ans %
= mod;
printf
("%lld"
, ans)
;return0;
}
d p[
i][j
]dp[i][j]
dp[i][
j]表示考慮到第 i
ii 種烹飪方法,使用食材 k
kk 烹飪的菜數比不使用食材 k
kk 烹飪的菜數多 j
jj 道時的方案數,算出總方案數,再用總方案數減去 dp[
n][j
](
j>0)
dp[n][j] \ (j>0)
dp[n][
j](j
>0)
時的情況,即為最終答案
高畫質無碼標程如下:
#include
#include
#define maxn 110
#define maxm 2010
#define mod 998244353
using
namespace std;
int n, m;
int a[maxn]
[maxm]
;// 表示烹飪方法為 i 時的總方案數為 sum[i]
long
long sum[maxn]
;/**
* 表示考慮到第 i 種烹飪方法,
* 選擇食材 k 的菜比不選食材 k 的菜多 j 道時
* 所得到的方案數,
* 從中選出 fil[n][j] (j > 0) 的部分即為不合法的部分
*/long
long fil[maxn]
[maxn *2]
;// 開大一倍為了存下偏移量
long
long ans =1;
long
long tot =0;
intmain()
for(
int i =
1; i <= n;
++i)
tot +
= fil[n]
[i + maxn]
, tot %
= mod;
}printf
("%lld"
,(ans - tot + mod)
% mod)
;return0;
}
居中乙個元素
1.行內元素水平居中 利用 text align center 可以實現在塊級元素內部的行內元素水平居中。此方法對inline inline block inline table和inline flex元素水平居中都有效。parent此外,如果塊級元素內部包著也是乙個塊級元素,我們可以先將其由塊級元...
乙個保密思路
如果你機子被入侵,那麼你最擔心的是什麼?那麼怎麼保護自己呢?這個時候乞求防毒軟體 防火牆,恐怕早沒什麼效果。基於上面的擔心考慮,我想出乙個不是萬能的辦法 1 寫乙個程式,感染本機內除系統目錄外的全部檔案,或者感染你指定的機密檔案。2 程式會自動的在所有源 檔案中插入特定 函式。3 本級每次啟動建立多...
如何居中乙個div?如何居中乙個浮動元素?
居中乙個div 給div設定乙個寬度,margin 0px auto。position absolute top 50 left 50 transform translate 50 50 彈性盒居中 justify content center align items center 居中乙個浮動元素...