試卷下載 浙江J組入圍線66分,入圍人數共946名,有效參加共5890人。
一、單項選擇題
1. 答案:D
解析:C語言是面向過程的,在C語言中沒有對象(class)這種概念,C++有STL,就是模版類,當然class也有的。Java、Python也都有class。OI更像c with stl,其實我們做的事情就是面向解決問題的過程,又叫算法。
2. 答案:B
解析:圖靈是人工智能之父,有個很著名的人工智能測試叫做圖靈測試。
3. 答案:A
解析:送分題,計算機只認0和1。
4. 答案:C
解析:繼續送,先選第一個作為最大值,然后比較N-1次。1個數比較0次,特判出來也可以。
5. 答案:D
解析:b不可能比a先出棧,選D
6. 答案:D
解析:樹有n-1邊,m-(n-1)=m-n+1
7. 答案:C
解析:\(4+1+1* 1/2+1/4=5.75\)
8. 答案:A
解析:完全二叉樹種數就是高度為5要填幾個,是\(2^{5-1}=16\)個
9. 答案:B
解析:后綴表達即把運算符放在后面,如果不會轉換,可以帶答案,為B
10. 答案:B
解析:先6個里面選2個,再4個里選2個,最后兩個2個里選兩個。利用乘法原理,但是過程中包含了順序,需要再除去。
\(C(6,2)*C(4,2)*C(2,2)/A(3,3)=15\)
11. 答案:B
解析:貪心,哈夫曼編碼 出現次數多的編碼短,這樣總長度就短了。
12. 答案:A
解析:分類,第1位放3or第一位放1或2,\(2*2+(6+1)*2=18種\)
13. 答案:C
解析:\(7*5*3*2*1=210\)
14. 答案:B
解析:有abdce、acdbe、acedb三種順序,有2種可能。
15. 答案:B
解析:1,2過河,1返回。
4,8過河,2返回。
1,2過河。
2+1+8+2+2=15,更一般的情況,挺難的貪心 POJ1700Crossing River
二、閱讀程序
1.f(x)實際上是popcount,返回x二進制表示中1的個數,g(x)為lowbit操作,樹狀數組一個非常經典的操作。取出非負整數n在二進制表示下最低位的1,以及它后面的0構成的數值,也就是最低位的1所對應的2的冪。典中點之 基本數據類型在內存中的存儲
1) 答案:F
解析:n=1001,a下標可使用范圍[0,999],越界了
2) 答案:F
解析:f(x)使用的是&(x-1),1一定會被去完
3) 答案:F
解析:\(a[4]=10=(1010)_{2}\),有f(x)=2, g(x)=2
4) 答案:T
解析:f(x)=16,g(x)=2,如果沒看懂程序,這個不好做。
5) 答案:F
解析:g函數未定義
6) 答案:B
解析:這兩個數非常特殊,65536時2的16次方,2147483647是int最大值,全是1。f(-65536)=16,g(65536)=65536,f(2147483647)=31,g(214748367)=1。這個不好做
2.僅包含解密字符串部分,應該我中午發了你們都看到了?當然硬着分析也問題不大。TZOJ7214: Base64編碼
1) 答案:F
解析:解密得到的是任意的,沒有限定
2) 答案:T
解析:僅包含了大小寫字母、數字和"+"和"/"這64種字符和“=”,輸入些垃圾字符,就會被忽略掉。
3) 答案:?T
解析:有爭議,如果char類型有符號是-1,否則是255。C語言標准沒定義,是ub(undefined behavior)。
4) 答案:B
解析:decode只有一個n的循環,string只有添加字符操作
5) 答案:B
解析:手算,不難,去年有彩蛋,今年沒有。
6) 答案:C
解析:這個題目會稍微復雜些,你首先要推出輸出字符串長度為8,然后再算再分析,這樣的題目建議題目全寫完后有非常多的時間再做。
3.和素數篩選有關,很像我們上課學的埃斯特尼篩法,他進行了一下優化。上課也提到過,這是歐拉篩(線性篩)。
1) 答案:T
解析:如果x不等於1,f[1],g[1]也用不到
2) 答案:F
解析:c[i]為i的最小質因子的次數+1,即f[i]的一個因子,這個篩法很巧妙的,有興趣可以了解下,
3) 答案:F
解析:g求因子和,因子和的話
4) 答案:A
解析:這個算法很nb,O(n)的,因為第二重循環循環到要重復的數時就break掉了,也就是不會重復標記多次。
5) 答案:C
解析:數一下100以內的質數個數,2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97共25個
6) 答案:C
解析:看懂了很簡單,f求因子個數,g求因子和。\(1000=2^{3}*5^{3}\),因子個數為\((3+1)*(3+1)=16\);因子和的公式比較復雜,自己就手算一下吧。
三、完善程序
1.本題很簡單,有做錯的出去挨打。我們約瑟夫環寫的比這個難。
1) 答案:D
解析:c記錄離開的人數,c=n-1作為結束條件
2) 答案:C
解析:p記錄當前報的數,報1離開。
3) 答案:C
解析:離開的人數+1
4) 答案:D
解析:交替0和1
5) 答案:B
解析:i表示當前報數的人,需要從0~(n-1)依次
2.二分+枚舉,不算難,相對閱讀程序來說,這次完善程序很簡單。
1) 答案:B
解析:按照橫縱坐標排序。
2) 答案:D
解析: unique函數是要刪去多余的點,第一個點保留,之后和前一個比,相等就舍去,其實就是離散化的思想,線段求交也能用。
3) 答案:C
解析:這不就是二分嘛,右移就是/2
4) 答案:B
解析:點是按升序排的,也是一樣的比較方法,滿足則p點在mid右側
5) 答案:D
解析:前兩層循在枚舉左下頂點和右上頂點,需要判斷i點是不是在j點的左下方。
