hdu 5898 數字dp,記憶化搜尋

2021-07-24 05:04:21 字數 885 閱讀 7446

#include

using namespace std;

#define mod 1000000007

#define pi acos(-1.0)

#define inf 0x3f3f3f3f

typedef long long ll;

typedef unsigned long long ull;

ll dp[25][25][3];

//dp[pos][cnt][k]代表在pos位置之前填了cnt個性質為k(1為奇數,2為偶數)的連續的數

//pos為當前處理的數字(權重表示法,也就是剩下pos+1位待填數)

//ok-狀態;

//lim-後面的數是否可以任意填,1-不可以,0-可以

int num[25];

ll dfs(int zero,int

pos,ll cnt,int ok,int lim)

int n=lim?num[pos]:9;

ll ans=0;

if(!lim&&dp[pos][cnt][ok]!=-1)return dp[pos][cnt][ok];

for(int i=0;i<=n;i++)

if(ok==0)

else

}if(ok==1&&i%2==1)

if(ok==2&&i%2==0)

}if(!lim)

dp[pos][cnt][ok]=ans;

return ans;

}ll cal(ll x)

ll ans=dfs(0,len,0,0,1);

return ans;

}int main()

return

0;}

hdu3555(數字dp記憶化搜尋)

記憶化搜尋解法 include include int64 dp 25 3 dp pos pre pos記錄位數 pre記錄字首狀態0表示字首不包含49且pos 1不是4 1表示字首不包含49且pos 1位是4 2表示字首包含49 int digit 25 存數的各位上的數字 int l 存數的位數...

hdu 3709(數字dp 記憶化搜尋)

平衡數 這道題比較難吧 和以往的數字記憶化搜尋設計的狀態不太一樣 也是用的記憶化dfs 熟練之後應該就沒太大問題了 include include int64 dp 20 20 2010 pos 數字位置 v支點的位置 s 力矩的數值 int digit 20 int64 dfs int pos,i...

hdu 5179 數字dp 記憶化搜尋

dp i j 記錄第i位為j時在非限制條件下的符合條件數的個數 那麼在記憶化搜尋中標記當前狀態是否有限制,當前狀態下是否為 因為最終如果非 要返回1,是0返回0 因為最終要求的數 的取值範圍不包括0 那麼求取時直接算取get m 和get n 1 即可求解 include include inclu...