NOIP2018初賽 解題報告

前言

NOIP2018NOIP2018初賽已經結束了,接下來就要準備複賽了。

不過,在此之前,還是先爲初賽寫一篇解題報告吧。


單項選擇題

  1. 送分題。(雖然我還是做錯了)可以考慮將它們全部轉化爲1010進制,則(269)16=(617)10=(1151)8(269)_{16}=(617)_{10}=(1151)_8,而(1001101011)2=(619)2(1001101011)_2=(619)_2。故選DD
  2. 常識題。顯然C,C++,PascalC,C++,Pascal都是編譯執行的,只有PythonPython是解釋執行的。故選DD
  3. 一道沒什麼意義的題目,隨便蒙了一個答案。應選BB
  4. 顯然,深度爲00的有11個節點,深度爲11的有kk個節點,深度爲22的有k2k^2個節點,一次類圖,深度爲hh的有khk^h個節點,於是總節點數=k0+k1+k2+...+kh=kh+11k1=k^0+k^1+k^2+...+k^h=\frac{k^{h+1}-1}{k-1}。故選AA
  5. 由於T(0)=1,T(n)=T(n1)+nT(0)=1,T(n)=T(n-1)+n,所以可得T(n)=n(n+1)2+1T(n)=\frac{n(n+1)}2+1,這是近似於O(n2)O(n^2)的。故選DD
  6. 比較基礎的一道題。應選BB
  7. 顯然,如果固定左端點在最左邊,則隨機選取一個右端點後線段長度期望爲12\frac12,再選擇一個點,則線段長度期望肯定小於12\frac12,而答案中只有BB一個選項是小於12\frac12的。故選BB
  8. 仔細觀察,可以發現BB選項和CC選項本質上是一樣的,因此可以排除。AADD選項自己手算驗證一下,便能發現AA是錯誤的。故選AA
  9. 感性理解一下,不管你摸幾次球,每次摸到兩個球的概率是一樣的,所以應該是1:11:1。故選DD
  10. 手算代入驗證一下即可(其實就相當於x=x&xx-=x\&-x)。應選BB

不定項選擇題

  1. 常識題。特別注意即使是關機的手機也不能帶進考場,草稿紙同理。故選ABAB
  2. 自己畫畫圖即可,這裏就不多說了。應選CDCD
  3. 關於此題,ABDABD選項選項顯然是錯的,而CC選項顯然有問題。故選ABDABD
  4. 這題應該也是挺顯然的。應選ABDABD
  5. 這種題目考前剛好複習過。應選BCDBCD

問題求解

  1. 根據第③點,由於丙去了,所以丁一定不去;根據第④點,由於丁不去,而丙去了,說明甲一定去了;根據第②點,由於丁不去,說明乙肯定也沒去;根據第①點,由於乙不去,而甲去了,說明週末沒下雨。因此答案爲:去了 沒去 沒去 沒下雨
  2. 首先要知道一個性質:若設aba\le b,則a=a or b,b=a and ba=a\ or\ b,b=a\ and\ b(我也不會證)。對於bb11的位數xx進行枚舉(從050\sim5),可以發現aa2x2^x種選擇(每一位選與不選),因此答案就是i=05C5i2i\sum_{i=0}^5C_5^i2^i,計算得243243,但由於我們考慮的是aba\le b的情況,因此最終答案應爲243232=454243*2-32=454(注意去重)。

閱讀程序寫結果

  1. 模擬即可。答案應爲44
  2. 這題本質上就是讓你求一張圖上有幾個環。答案應爲66
  3. 熟悉哈希的人都知道,magic()magic()函數就是一個哈希的過程,因此就是要求出有多少個不同的子串,這應該還是很好數的。答案應爲1616
  4. 不難發現getNext()getNext()函數就是求當前排列的下一個排列。可以像我一樣大力模擬,也可以像奆佬hl666hl666 一樣用康拓展開求解。答案應爲2 1 3 5 6 42\ 1\ 3\ 5\ 6\ 43 2 5 6 1 43\ 2\ 5\ 6\ 1\ 4

完善程序

  1. (1)既然它讀入xx了,就不可能是a[i]=xa[i]=x(否則可以直接讀入a[i]a[i])。故答案應爲a[x]=ia[x]=i

    (2)根據雙向鏈表的的對稱性可以輕鬆求解。故答案應爲i+1i+1

    (3)同上。故答案應爲R[a[i]]R[a[i]]

    (4)同上。故答案應爲a[i]a[i]

    (5)自己帶幾組數據算一下即可。故答案應爲R[i]R[i]

  2. 這題是一個先貪心、再DPDP的過程(其實一開始的貪心是完全多餘的)。

    (1)根據此題代碼的大致思路,顯然可以看出第一個空該填什麼。故答案應爲a[i]0.95<=b[i]a[i]*0.95<=b[i]

    (2)這應該也是比較顯然的。故答案應爲total_a>=thresholdtotal\_a>=threshold

    (3)這一空與上一空差不多,也是判斷當前是否已經滿足threshold\ge threshold。故答案應爲total_a+j+a[i]total\_a+j+a[i]

    (4)顯然,此空填的應該是在第二個商店買東西的總價。故答案應爲f[j]+total_btotal_b_prefixf[j]+total\_b-total\_b\_prefix

    (5)只要會揹包的應該都知道,既然它判斷了j>=a[i]j>=a[i],就肯定是要進行轉移了。故答案應爲f[ja[i]]f[j-a[i]]


後記

這次初賽應該能壓線過的。

希望在NOIP2018NOIP2018中能夠取得一個好成績!

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