HENUOJ部分藍橋題目

2021-09-10 07:25:12 字數 4215 閱讀 6891

對於長度為5位的乙個01串,每一位都可能是0或1,一共有32種可能。它們的前幾個是: 

00000 

00001 

00010 

00011 

00100 

請按從小到大的順序輸出這32種01串。

本試題沒有輸入。

輸出32行,按從小到大的順序每行乙個長度為5的01串。

input

output

00000

00001

00010

00011

《以下部分省略》

time limit

1 second

memory limit

128 mb

採用模擬的方法,從末位往前修改,如果末位是0,改為1就行了,如果末位是1,把該位該為0,進行對前一位的修改,重複以上操作,五位一回車

以下**:

#includeusing namespace std;

int main();

for(int k=1;k<=5;k++)else

//}int f[1000010];

int main()

else

}int main()=,用這列數構造huffman樹的過程如下: 

1. 找到中最小的兩個數,設為pa和pb,將pa和pb從中刪除掉,然後將它們的和加入到中。這個過程的費用記為pa + pb。 

2. 重複步驟1,直到中只剩下乙個數。 

在上面的操作過程中,把所有的費用相加,就得到了構造huffman樹的總費用。 

本題任務:對於給定的乙個數列,現在請你求出用該數列構造huffman樹的總費用。 

例如,對於數列=,huffman樹的構造過程如下: 

1. 找到中最小的兩個數,分別是2和3,從中刪除它們並將和5加入,得到,費用為5。 

2. 找到中最小的兩個數,分別是5和5,從中刪除它們並將和10加入,得到,費用為10。 

3. 找到中最小的兩個數,分別是8和9,從中刪除它們並將和17加入,得到,費用為17。 

4. 找到中最小的兩個數,分別是10和17,從中刪除它們並將和27加入,得到,費用為27。 

5. 現在,數列中只剩下乙個數27,構造過程結束,總費用為5+10+17+27=59。 

輸入的第一行包含乙個正整數n(n<=100)。 

接下來是n個正整數,表示p0, p1, …, pn-1,每個數不超過1000。 

輸出用這些數構造huffman樹的總費用。

input

55 3 8 2 9

output

59
這道題使用優先佇列就可以了,從小到大排序,每次取出佇列前兩個數,相加之後再放入佇列中(優先佇列在最短路的迪傑斯特拉演算法中也有使用)

以下**:

#include#includeusing namespace std;

int main()

int sum=0;

while(!p.empty())

b=p.top();

p.pop();

c=a+b;

sum+=c;

// cout<

jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的(使用相同個數的字母),英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我們把這樣的「數字」稱為jam數字。在jam數字中,每個字母互不相同,而且從左到右是嚴格遞增的。每次,jam還指定使用字母的範圍,例如,從2到10,表示只能使用這些字母。如果再規定位數為5,那麼,緊接在jam數字「bdfij」之後的數字應該是「bdghi」。(如果我們用u、v依次表示jam數字「bdfij」與「bdghi」,則u,且不存在jam數字p,使u)。你的任務是:對於從檔案讀入的乙個jam數字,按順序輸出緊接在後面的5個jam數字,如果後面沒有那麼多jam數字,那麼有幾個就輸出幾個。 

有2行,第1行為3個正整數,用乙個空格隔開: 

s t w 

(其中s為所使用的最小的字母的序號,t為所使用的最大的字母的序號。w為數字的位數,這3個數滿足:1≤s最多為5行,為緊接在輸入的jam數字後面的5個jam數字,如果後面沒有那麼多jam數字,那麼有幾個就輸出幾個。每行只輸出乙個jam數字,是由w個小寫字母組成的字串,不要有多餘的空格。 

input

2 10 5

bdfij

output

bdghi

bdghj

bdgij

bdhij

befgh

對題目的解釋:要求這一串字母中不能有重複的,且字母都是在給定區間內的,字母有大小之分

**還不想寫,以後補上

如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k = 4,l = 2的時候,所有k好數為11、13、20、22、30、31、33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。 

輸入包含兩個正整數,k和l。

輸出乙個整數,表示答案對1000000007取模後的值。

input

4 2
output

7
資料規模與約定 

對於30%的資料,kl <= 106; 

對於50%的資料,k <= 16, l <= 10; 

對於100%的資料,1 <= k,l <= 100。

這道題我覺得只需要找出乙個函式的對應關係就能求解了。先來看第一位,不能為零,有n-1中情況,

如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k = 4,l = 2的時候,所有k好數為11、13、20、22、30、31、33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。 

輸入包含兩個正整數,k和l。

輸出乙個整數,表示答案對1000000007取模後的值。

input

4 2
output

7
資料規模與約定 

對於30%的資料,kl <= 106; 

對於50%的資料,k <= 16, l <= 10; 

對於100%的資料,1 <= k,l <= 100。

這是一道動態規劃的題,但是我動態規劃掌握的還不太牢固

#include#define mod 1000000007

int main()

}} }

int sum=0;

for(i=1;i

如下面第乙個圖的九宮格中,放著 1~8 的數字卡片,還有乙個格仔空著。與空格子相鄰的格仔中的卡片可以移動到空格中。經過若干次移動,可以形成第二個圖所示的局面。 

我們把第乙個圖的局面記為:12345678. 

把第二個圖的局面記為:123.46758 

顯然是按從上到下,從左到右的順序記錄數字,空格記為句點。 

本題目的任務是已知九宮的初態和終態,求最少經過多少步的移動可以到達。如果無論多少步都無法到達,則輸出-1。 

輸入第一行包含九宮的初態,第二行包含九宮的終態。

輸出最少的步數,如果不存在方案,則輸出-1。

input

12345678.

123.46758

output

3
input

13524678.

46758123.

output

22
需要注意的問題是如何記錄每一種情況,還有就是如何判斷這個情況出現過

解決的辦法是用雜湊對映

ctf部分題目思路

一 ctf工具 web 1.firefox hackbar,firebug,tamper data,user agent switcher 2.burpsuite 3.sqlmap 隱寫 1.stegsolve 2.winhex 3.notepad 4.qr resuarch 5.binwalk 6...

數論的部分題目

在做此類的問題時,要注意一下幾點。注意事項 資料的型別 正數 負數 小數,0.資料的正確性 考慮錯誤輸入,錯誤輸入該如何處理 資料最大和最小範圍 int max 2147483647,0x7fffffff int min 2147483648,0x80000000 例題 1.string to in...

概率dp部分題目

記錄一些比較水不值得單獨寫一篇blog的概率dp題目 bzoj3036 綠豆蛙的歸宿 給出乙個有向無環的連通圖,起點為1終點為n,每條邊都有乙個長度。綠豆蛙從起點出發,走向終點。到達每乙個頂點時,如果有k條離開該點的道路,綠豆蛙可以選擇任意一條道路離開該點,並且走向每條路的概率為 frac 現在綠豆...