數字DP BZOJ3629數字之積

2021-07-10 03:03:50 字數 1022 閱讀 1176

傳送門

數字dp**好…

乘積太大儲存不下來腫麼辦?

這乘積都是

1 到

9的數字乘起來滴,於是乎用質因數表示就好了,特別注意對每一種質數的最大個數最好卡著開陣列,要不然很容易mle滴…

原諒蒟蒻太弱,**為了放錯就寫的很醜= =

#include 

#include

#include

#define ll long long int

using

namespace

std;

int n, w[20], len;

ll p2[31], p3[20], p5[14], p7[12];

ll l, r, f[20][31][20][14][12][2];

inline

void add(int num,int l,int a,int b,int c,int d,int t,ll p)

ll cal(ll m)

add(w[len],len,0,0,0,0,1,1);

for(int i=w[len]-1;i;--i)add(i,len,0,0,0,0,0,1);

for(int i=len;i;--i)add(1,i,0,0,0,0,0,1);

for(int i=len-1;i;--i)

}ll ans=0;

for(int a=0;p2[a]<=n;++a)

for(int b=0, e=n/p2[a];p3[b]<=e;++b)

for(int c=0, e2=e/p3[b];p5[c]<=e2;++c)

for(int d=0, e3=e2/p5[c];p7[d]<=e3;++d)

if(p2[a]*p3[b]*p5[c]*p7[d]<=n)

ans+=f[1][a][b][c][d][0]+f[1][a][b][c][d][1];

return ans;

}int main()

數字DP BZOJ 3679 數字之積

還有最最開始的錯誤做法 我是直接記錄乘積是不是滿足條件的狀態 sta 0 乘積無意義 sta 1 乘積為0 sta 2 乘積 n sta 3 乘積 n.但是這個顯然就錯了叭。因為相同的sta的可能乘積並不相同,也就是說並不具有無後效性。可能跑完這個數字就更新了dp pos sta 但是其他的乘積的時...

數字DP BZOJ 3876 支線劇情

輸入一行包含乙個正整數n。接下來n行,第i行為i號劇情點的資訊 第乙個整數為,接下來個整數對,bij和tij,表示從劇情點i可以前往劇 情點,並且 這段支線劇情需要花費的時間。輸出一行包含乙個整數,表示jyy看完所有支線劇情所需要的最少時間。6 2 2 1 3 2 2 4 3 5 4 2 5 5 6...

數字DP之找等凹數字

include include include include include include include include include include include include using namespace std long long dp 20 20 10 2 2 2 int nu...