BZOJ 3679 數字之積 數字DP

2022-03-30 07:06:31 字數 828 閱讀 2954

還是記憶化搜尋就行,但是要用\(map\)記憶化。

見**

#include#include#include#define r register int

#define ll long long

using namespace std;

namespace luitaryi ll n,l,r,num[19],len,stk[19],top;

mapf[20];

inline void print()

if(!ul&&!ck&&f[l].count(ml)) return f[l][ml];

r mx=ul?num[l]:9; register ll cnt=0;

for(r i=0;i<=mx;++i)

if(ck&&i==0) stk[++top]=i,cnt+=dfs(l-1,ul&&i==mx,true,0),--top;//一直是前導零

else if(ck&&i!=0) stk[++top]=i,cnt+=dfs(l-1,ul&&i==mx,false,i),--top;//第一次不是前導零

else if(!ck&&i!=0) stk[++top]=i,cnt+=dfs(l-1,ul&&i==mx,false,ml*i),--top;//之前有不是前導零的時刻

//注意到i=0且不是前導零時就不必向下dfs了

return f[l][ml]=cnt;

}inline ll solve(ll x)

inline void main()

} signed main()

2019.08.16

84

bzoj3679 數字之積 數字dp

裸的數字dp,豪爺講課的時候秒掉了,但是後來發現會mle,於是我們做這麼一件事,考慮數字的乘積一定是2 3 5 7的多少次冪之積,於是我們對於乙個n,把可行的數字拿出來排個序編個號就好了,表示不會用新學的這種數字dp處理前導0,果斷滾回原來的dp。include include include in...

BZOJ 3679 數字之積 數字DP

description 乙個數x各個數字上的數之積記為f x 不含前導零 求 l,r 中滿足0 這題資料非常非常水 我的錯誤 幾乎一半資料範圍都過不了都ac了 好在fyc大神發現我的 錯了,看了半天,終於明白了。有這幾個錯誤 1 用log來比較數的大小。這樣是十分不精確的,平常不推薦使用。2 陣列開...

bzoj 3679 數字之積 數字dp

乙個數x各個數字上的數之積記為f x 不含前導零 求 l,r 中滿足0input 第一行乙個數n 第二行兩個數l r output 乙個數,即滿足條件的數的個數 sample input 5 19 22 sample output hint 100 0很容易想到數字dp,但是因為n太大,無法直接做。...