某關於數字DP的一節課後的感受

2021-08-21 21:06:25 字數 1539 閱讀 7438

嚯呀

第一次寫部落格來著

題目

求給定區間[x,y]中滿足下列條件的整數個數,這個數恰好等於k個互不相等的b的整數次冪之和

input

15 20

2 2

out

17 18 20

示例:17=2^4+2^0 18=2^4+2^1 20=2^4+2^2

為什麼15和16不行呢???

因為15=2^3+2^2+2^1+2^0

此時k>2明顯不成立

而16=2^3+2^3

此時b明顯相等就無法通過

其實我們可以把它當成b進製的數來算(其實我也是聽老師講的)

在這裡我們把它化成一棵樹

然後轉化成0,1的格式,去尋找它的一的數量是否符合所要求的數

(好醜,其實是閒著蛋疼畫的【圖不一定是對的只是為了看得明顯一點......】)

這樣就可以在樹里尋找所滿足條件的結果

為什麼用0和1呢

because of

17=2^4+2^0

18=2^4+2^1

20=2^4+2^2

這個實際上就是b進製數

如下:

17=1*2^4+0*2^3+0*2^2+1*2^1+0*2^0

17=10001

同理18=10010 20=10100

15=1111 16=10000

所以說可以在樹中找它的1的數量就可以找出答案

//對f進行預處理(變得多多的。。。) 

void init()

}

為了給它放進樹里所做的努力!!!

然後去搜尋樹中的1,一般情況下左子樹的1要比右子樹的一來得少

【上面的圖好像有點錯】

當滿足條件時就可以記錄下來

上面的例子中可以看出有兩個1即可

此時就可以儲存。。。

int cal(int x,int k)

}if((tot+x)==k) ans++;

return x;

}

答案的輸出

cal

(y,k)-cal

(x-1,k)

這個答案的取值

嗯……

用上面做示範:

就是:

[1,20]–[1,14]=[15,20]

基本沒錯啦(這個[x,y]是區間的意思)

這樣可以找到答案

(如果有錯敬請各位大佬指出)

跪地求rp

最開心的一節課

今天上課講的是photoshop 修飾,首先給學生講的是將乙個黑白 的mm變成彩色的plmm,學生學習的興致都很高啊 第二個任務是將乙個滿臉蒼夷的mm變成乙個很藝術的mm,學生看到原照不禁大叫倒胃口,赫赫,拿這樣的教學來加深他們的印象也未嘗不可。不過大家都學得挺認真的,呵呵,實用嘛。下課時我教育他們...

第一節課的部落格

得得得得 得得得得 得得得得 得得得得 得得得得 大於號加你要引用的句子 少壯不努力,老大徒傷悲 三個 三個 點選跳轉到我的ab c減號加空格 名字性別 年齡張三男18 dadasd ctrl c 複製 ctrl v 貼上 ctrl a 全選 ctrl x 剪下 ctrl z 撤銷 ctrl s 儲...

最好的一節課 魏明偉

最好的一節課 csdn 短短的倆小時,讓我從心底裡明白了,啥叫做快樂學習,不知不覺中掌握了知識,自己都不知道,做作業時才發現進步了這麼多。歡悅的課堂氣氛,幽默的講師,投入的學生,讓我有了極大的興趣。這是我上學以來收穫最多的一節了,要是專業課跟這一樣的話,我的人生一定是錢途無量,呵呵,小自豪一把。世間...