對於數字dp的題目,我學習的是y總的模板,也就是說把所有數先用拆位後考慮從頭開始考慮,形成乙個樹的形狀
左分支為填0-ai-1的情況,這列情況一般可以通過數學公式一次性求出,之後右分支就填當前數,這樣向下延申,在最後特判右分支的情況,也就是乙個數
對於數字dp,一般儲存兩個量,乙個是個數,乙個是last,用來儲存字首資訊。這些都是基本思路
其他的需要根據題目來分析:
#include#includeview codeusing
namespace
std;
const
int n=35
;int
f[n][n];
intx,y,k,b;
void
init()}}
}int dp(int
n)
int res=0
;
int last=0
;
inti;
for(i=num.size()-1;i>=0;i--)
else
}if(!i&&last==k)
res++;
}return
res;
}int
main()
AcWing 1081 度的數量
度的數量 求給定區間 x,y 中滿足下列條件的整數個數 這個數恰好等於 k 個互不相等的 b 的整數次冪之和。例如,設 x 15,y 20,k 2,b 2 則有且僅有下列三個數滿足題意 17 2 4 2 0 18 2 4 2 1 20 2 4 2 2 輸入格式 第一行包含兩個整數 x 和 y 接下來...
Acwing 1081 度的數量 數字dp
題目大意 求給定區間 x,y 中滿足下列條件的整數個數 這個數恰好等於 k 個互不相等的 b 的整數次冪之和。例如,設 x 15,y 20,k 2,b 2,則有且僅有下列三個數滿足題意 17 24 20 18 24 21 20 24 22 輸入格式 第一行包含兩個整數 x 和 y,接下來兩行包含整數...
AcWing 連通塊中點的數量
給定乙個包含n個點 編號為1 n 的無向圖,初始時圖中沒有邊。現在要進行m個操作,操作共有三種 c a b 在點a和點b之間連一條邊,a和b可能相等 q1 a b 詢問點a和點b是否在同乙個連通塊中,a和b可能相等 q2 a 詢問點a所在連通塊中點的數量 第一行輸入整數n和m。接下來m行,每行包含乙...