題目傳送門
#include using namespace std;
const int n = 20;
int a[n]; //數字分離的陣列
int dp[n][n];//dp[pos][pre]表示當前第pos位,pre是指前一位是什麼,這個因素制約了後面的取值個數
/** * 功能:統計[0~pos]之間答案
* @param pos 當前列舉到的數字pos(搜尋的深度)由高到低
* @param pre 前一位是什麼
* @param limit 前幾位的數字是否等於上界的前幾位數字 op(0/1)(限制本次搜尋的數字範圍)
* @return 方案數
*/int dfs(int pos, int pre, bool limit)
int calc(int x)
int main()
#include using namespace std;
const int n = 15;
int f[n][n]; //表示一共有i位,且最高位是j的數的個數
//預處理出不降數的數量陣列f[n][n]
void init()
//計算[0~n]之間不降數的個數
int dp(int n)
//返回結果
return res;
}int main()
Acwing 1082 數字遊戲
數字 dp 問題往往都是這樣的題型,給定乙個閉區間 l,r 讓你求這個區間中滿足某種條件的數的總數。字首和思想,轉化為 f 0,r f 0,l 1 求解。轉化成求 f n 將上限n轉化成10進製 根據題意轉化為k進製,一般是十進位制 列舉從最高位開始列舉n的10進製的每一位,只要該位的取值小於n的1...
題解 AcWing 1082 數字遊戲
link 定義不降數為從左到右各位數字呈非下降關係。求 a,b 之間有多少不降數。1 leq a leq b leq 2 1 把詢問差分,變為詢問 1,n 中不降數的個數。首先,我們可以 dp 出 x 位且最高位為 y 的不降數的個數 設 f 表示 i 位,且最高位為 j 的不降數的個數。計算的時候...
AcWing 1084 數字遊戲 II
題目描述 由於科協裡最近真的很流行數字遊戲。某人又命名了一種取模數,這種數字必須滿足各位數字之和 mod n為 0。現在大家又要玩遊戲了,指定乙個整數閉區間 a.b 問這個區間內有多少個取模數。輸入格式 輸入包含多組測試資料,每組資料佔一行。每組資料報含三個整數 a,b,n。輸出格式 對於每個測試資...