7.21-2014新生暑假個人排位賽04

居然有兩次都把  把long long寫成%d的   scanf和printf交上去了。。。。。wa了兩次。。。

A.B題以後不能再這麼2了。

--------------------------(我是可愛的分界線)我的目標是:誰都看得懂-------------------------

C.崔逗逗的難題

題意:給正方形邊長求深紫面積,淺紫面積,粉紅色。

解法:1.面積小學生都會求,關鍵是精度。

           2.使用long double類型的變量,輸出的時候用%Lf。

           3.如果把表達式直接放到printf中,也可以水過去,這就要看人品了,反正我是沒水過去,唉。



D.崔逗逗給你信心

題意:給n,求0<=x<=n的範圍內,有多少個數滿足(x)^(2x)^(3x)==0 。結果對1000000009取餘。

輸入樣例

1
2

輸出樣例

2


解法:

首先,要知道什麼叫異或。就是把a和b轉換成二進制,a異或b(即a^b)就是把二進制列出來,不同就是1,同樣就是0。比如11^23。11就是1101,23就是10111。兩者異或就是01010。

其次,要知道什麼情況下異或爲0,那肯定是兩個數完全一樣,異或才能一個1都不出現。只有000000000.

所以,x^2x^3x==0等價於x^2x==3x.

再來看看異或和加法的區別。a,b當前位置一個爲0,一個爲1,那麼異或爲1,加法也是1,a,b當前位置爲兩個0,異或爲0,加法也爲0.。。。。。。只有a.b當前位置兩個都是1,異或才和加法不同。顯然X+2X=3X,所以現在我們的目標是,找出異或和加法完全一樣的數字。

2x相當於x的二進制左移一位。比如3,二進制爲11,它的兩倍6,二進制爲110.也就是說把某個數字,二進制左移一位,它和左移之前的相異或,不出現兩個都爲1,這樣的數字在0到n有幾個?也就是1不能和1相鄰。

開一個數組f,存進去二進制只有一位時有幾種可能,二進制有兩位時有幾種可能,很容易發現這是一個斐波那契數列,也就是f(n)=f(n-1)+f(n-2)的數列。

現在給出一個n,比如它的二進制爲10100,那就令第一位爲0,剩下四位隨便,也就是res=res+f(4),再接着找下一個1,下一個1在第三個,那就是res=res+f(2),加入最後只剩最後一位。res=res+1;

實現有點麻煩,要用遞歸。


E. 焦級長搭積木

題意:積木數N,層數H,最底層M個。除最底層,每一層的積木數是它下一層積木數+1或-1且每層積木不超過10個。輸出方案數,給出K,要求給出順序排列的第K種方案(最小的排列爲第一種)。

輸入樣例

13 6 2
1
3
-1

輸出樣例

3
2 1 2 3 2 3
2 3 2 3 2 1


解法:

1.開一個三維數組dp[n][h][m]表示n個積木有h層最底層爲m個的情況。

2.把h=1而且n=m的情況初始化爲1,其餘初始化爲0.......dp[n][h][m]=dp[n-m][h-1][m+1]+dp[n-m][h-1][m-1];相當於抽掉最底層後剩下的狀態轉移方程。

3.給你一個k。你把[n-m][h-1][m-1]擁有的積木數x和[n-m][h-1][m+1]擁有的積木數比較,如果k比前者小,那就把前者作爲下一個狀態,如果k比後者大,那就把後者變爲下一個狀態此時的k變爲k-x,一直轉移下去直到最頂層。

4.這題的代碼還沒交。。。。明天提交試試。。。。。





完整地寫完了。我覺得自己真是太棒了哈哈哈。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章