在我學st表的時候,對於動態規劃方程總是有點不理解,我相信肯定也有人會遇見同樣的問題,我就把我現在對於這個方程的理解說一說。st表的陣列st[i][j]是指以i為左端點,含有2^j個數的閉區間(包含了i);那麼對於st[i][j]所代表的區間就是
[i,i+2^j-1];(如果不減1就多了乙個數了,這裡非常重要);
大區間可以由小區間合併來。[i,i+2^j-1]都可以拆成更小的區間,可以拆成
[i,i+2^(j-1) -1]
(這裡用了2^(j-1) 個數字,那麼總區間是2^j 個數字,就是剩下2^j - 2^(j-1) 個數字,也就是剩下2^(j-1) 個數字);所以第二個區間的數字個數也確定了。
[i+2^(j-1) , i+2^(j-1) + 2^(j-1) -1];
對於詢問,直接上圖
希望這樣的解釋可以看得懂,如果還有任何不懂的地方歡迎來詢問。
hdu 1496 hash 方程解的情況
題意 根據題中所給的方程,輸出a,b,c,d,輸出滿足方程的解的方案的個數 思路 hash x1,x2 和 x3,x4 如果兩個狀態儲存的位置相同那麼方案數加一,最後求出的方案乘以2 4,因為四個未知數是平方項,正負對其沒有影響。includeusing namespace std int hash...
取模方程解的個數 (迴圈節)
時間限制 1 sec 記憶體限制 128 mb 提交 346 解決 9 提交 狀態 討論版 命題人 cyh 給定x和m,問在區間 a,b 上存在多少個i,使得x i 1000 m。輸入由多組資料構成。每組資料一行,由四個空格分開的整數x m a和b組成。0 x,m 1000000000 1 a b ...
活動選擇問題的動態規劃解
題目大意 dp方法解活動選擇問題 解題思路 s i,j 表示所有活動的集合,即活動ai和aj之間,所有與這兩個活動 相容的活動組成的子集。c i,j 表示該集合的大小。核心內容 對問題的建模,採用該模型分析既可以使用這種dp解決,也可以類似lis問題的dp解決,還可以 貪心解決。但是所有的這些都建立...