1. 程式人生 > 資訊 >專櫃 1540 元:SK-II 神仙水 699 元(大紅瓶面霜 963 元)

專櫃 1540 元:SK-II 神仙水 699 元(大紅瓶面霜 963 元)

數位dp就是套模板 ——lwz dalao

模板

\(\text{dfs}\) 式數位 \(\text{DP}\) ):

ll dfs(ll len,bool Limit,bool zero,ll …… ) // 其他各種條件
{
	 if(len>w) return zero^1;  // 注意!!!特判 0
	 if(!Limit && dp[len][……]!=-1) return dp[len][……];
	 ll ret=0;
	 for(ll i=0;i<=9;i++)
	 {
	 	 if(Limit && i>num[len]) break; // 只有在有 Limit 最高位限制是才需要判斷是否高於最高位
	 	 if(……) // 根據題目滿足各種條件
	 }
	 if(!Limit && !zero) dp[len][……]=ret; // 必須同時滿足沒有最高位與前導 0 限制
	 return ret;
}

ll solve(ll x)
{
	 memset(dp,-1,sizeof(dp)); // 有時要每一次都賦值!!!
	 ll w=0,tmp=x;
	 while(tmp) num[++w]=tmp%10,tmp/=10; // 統計位數
   	 // 有的情況下應在這裡給 dp 陣列賦值
	 return dfs(w,1,1,……);
}

memset(dp,-1,sizeof(dp)); // 有時只用賦值一次!!!

例題

P4317 花神的數論題

題意:統計 \(n\) 以內正整數的二進位制中 \(1\) 的個數之積。

列舉 \(k=1\dots \log_2^n\) ,分別計算二進位制中 \(1\) 的個數為 \(k\) 時的數的個數,最後相乘即可。

P2657 [SCOI2009] windy 數

P2602 [ZJOI2010]數字計數

統計 \([1,n]\)\(0\dots 9\) 每一個數位分別出現多少次。

模板吧~

P3413 SAC#1 - 萌數

P4127 [AHOI2009]同類分佈

CF914C Travelling Salesman and Special Numbers