已經加入了2020年的毒瘤匯總。
雜
2.下列不屬於應用層協議的是(D)。
A. FTP協議 B.HTTP協議 C.SMTP協議 D.TCP協議
12、以下在OSI模型中不屬於TCP/IP模型中的應用層的是(BC)
A、會話層 B、網絡層
C、數據鏈路層 D、表示層
13.下列哪些算法是由tarjan發明的(ABC)
A、Splay
B、LCT
C、Median of medians linear time selection algorithm
D、Timsort
9、請給以下四個事件發生的時間排序(B)
1.舉辦第一次NOIP
2.舉辦第一次NOI網絡同步賽
3.NOIP提高組由四題改為三題
4.舉辦第一次APIO
A、1234 B、1243
C、2134 D、2143
以下是面向對象的高級語言的有(BD )。
A. 匯編語言
B. C++
C. Fortran
D. Java
面向過程:C,BASIC,Pascal;
面向對象:C++,Java,Smalltalk,Object Pascal ,Python;
解釋型語言(java,Python)
7.下列有關CPU的說法,正確的是( B )
A.CPU的用途是將計算機系統所需要的顯示信息進行轉換驅動顯示器。
B.CPU 的性能和速度取決於時鍾頻率(一般以赫茲或千兆赫茲計算,即 hz 與 Ghz)和每周期可處理的指令(IPC),兩者合並起來就是每秒可處理的指令(IPS)。
C.AMD 是世界上最大的半導體公司,也是首家推出 x86 架構處理器的公司。
D.目前的 CPU 一般都帶有3D 畫面運算和圖形加速功能,所以也叫做“圖形加速器”或“3D加速器”。
解析:A、D都是顯卡,C是INTEL
7、下列地址中,屬於B類IP地址的是(C )。
A、27.33.119.2 B、192.97.32.121 C、133.201.189.32 D、126.33.82.107
是128.0.0.0~191.255.255.255
4、真正能唯一標識出一台計算機網絡中一台計算機的地址是(D)。
A.地址掩碼
B.ip地址
C.域名地址
D.MAC地址
選D 不是B
mac地址是是網卡芯片的唯一標識碼
一個網卡會有一個全球唯一固定的MAC地址,但可對應多個IP地址。
域名地址,域名與IP對應,一個域名可以對應多個IP,一個IP可以對應多個域名
10.若要使用 g++ 編譯器,開啟 -Ofast 優化,且使用 C++ 11 標准,將源文件 prog.cpp 編譯為可執行程序 exec,且保留調試信息,則需要使用的編譯命令為( D )
A.g++ prog.cpp -Ofast exec -std=c++11 -debug
B.g++ prog.cpp -Ofast exec -std=c++11 -g
C.g++ prog.cpp -o exec -Ofast -std=c++11 -debug
D.g++ prog.cpp -o exec -Ofast -std=c++11 -g
1、采樣頻率為44.1kHz,16位量化的雙聲道立體聲,其20秒鍾數據量約為(C)。
A)1.68MB B)1.68KB
C)3.36MB D)3.36KB
44.1*1000*2*20*16/8*1024*1024=C
2、在下列幾種存儲器中,訪問速度最快的是(D)。
A.硬盤 B.cache C.RAM D.寄存器
寄存器>Cache>RAM>ROM>u盤
15、下列關於高級語言的說法不正確的是(C)。
A、Fortran是歷史上的第一個面向科學計算的高級語言
B、Pascal和C都是編譯執行的高級語言
C、BASIC是歷史上的第一個支持面向對象的語言
D、編譯器將高級語言程序轉變為目標代碼
歷史上的第一個支持面向對象的語言是Simula 67
數值轉換、邏輯運算
2、以下四項中( A )項與別的選項最不相同。
A.P∧﹁ Q
B.(P ∧ Q)→ P
C.P →( P ∨ Q)
D.﹁( P ∨ Q)∨﹁( ﹁P ∧ ﹁Q)
A是可滿足式,其它都是重言式
16、令p,q,r,s為四個命題,判定下列命題的可滿足性(可滿足定義為存在一組(p,q,r,s)使命題為真)。其中可滿足的有(AD)
A、(p ∨ ¬q) ∧ (¬p ∨ q) ∧ (¬p ∨ ¬q)
B、(p → q) ∧ (p → ¬q) ∧ (¬p → q) ∧ (¬p → ¬q)
C、(p ↔ q) ∧ (¬p ↔ q)
D、(p ∨ q ∨ ¬r)∧(p ∨ ¬q ∨ ¬s)∧(p ∨ ¬r ∨ ¬s)∧(¬p ∨ ¬q ∨ ¬s) ∧ (p ∨ q ∨ ¬s)
1、與二進制數101.01011等值的十六進制數為(D)。
A.A.B B.5.51 C.A.51 D.5.58
補0啊白痴
數學
- 兩艘輪船都要停靠同一個泊位,它們可能在晝夜的任意時刻到達,甲、乙兩船停靠泊位的時間分別為4小時和2小時,求有一艘船停靠泊位時必須等待一段時間的概率。
A、29/144 B、67/288
C、35/144 D、55/288
https://zhidao.baidu.com/question/1925193434845790827.html
- 在一條長度為 1 的線段上隨機取兩個點,則以這兩個點為端點的線段的期望長度是(B)。
A. 1 / 2
B. 1 / 3
C. 2 / 3
D. 3 / 5
https://blog.csdn.net/Hi_KER/article/details/83040154
5、已知2018年10月7日是星期日,那么1296年8月17日是(C)
A. 星期一 B.星期二
C.星期五 D.星期六
17xx年的時候某人-10天了。
麻蛋,算了半天。
14、\(有三個1級分裂怪,每個x級怪可以吃掉另x-1到x+1個x級怪\)
\(分裂出x^2 - 1 到 x^2+2個x + 1級分裂怪(自己死亡),\)
\(求以下哪幾種怪的個數情形是可能出現的?\)ABCD
A、0個一級分裂怪,1個二級分裂怪,6個三級分裂怪,10個四級分裂怪
B、2個一級分裂怪,3個三級分裂怪,3個4級分裂怪,35個5級分裂怪
C、1個一級分裂怪,2個三級分裂怪,3個4級分裂怪,46個5級分裂怪
D、3個一級分裂怪
10、隨機拋硬幣,在連續三次得到的結果是正反正時停止。那么期望拋的次數是(D)
A、7 B、8
C、9 D、10
10、桌上有若干枚棋子,甲、乙兩人玩輪流取棋子游戲,每次可取1枚、3枚或4枚,但不可取2枚,當無棋子取時算輸。甲、乙兩人都是玩取棋子游戲的絕頂高手,從不會失誤。現甲、乙兩人共玩了三局,先手分別是,甲,乙,甲,三局游戲開始時棋子枚數分別是7,13,21。問甲、乙雙方在三局游戲中的必勝方分別是(C)?
A.乙 乙 甲 B. 甲 乙 甲
C.乙 乙 乙 D. 乙 甲 乙
后取必勝.
設先取為甲,后取為乙
則每輪乙取的數必須與甲取的數,兩數之和能被3整除.
即甲取1,則乙取2;甲取2則乙取4;甲取4則乙取2.
因16被3除余1,如此取法,可使最終必余一數給甲.
10、給定如圖所示的正方形(n=3)。我們可以在這個正方形的某個格子上放置大炮。但是,如果大炮在同一行或者同一列,他們就會互相攻擊到。大炮數量為2,請你求出可能的放置方案總數,使得大炮互相不會攻擊到。現在告訴你n=3時,總數為46,則n=4時,總數為()。
如圖所示:上面為n=3的正方形,下面三幅圖,前兩幅可以互相攻擊到,第三幅無法互相攻擊到。
A、127 B、157 C、206 D、248
解析:首先注意n=4的正方形不要畫錯(長為4寬為4)。
考慮到限制條件為不同行不同列,那么我們可以做一個等價變換:
把原圖變為一個寬度遞增的圖形,這樣做的好處是避免了后效性問題。
設f[i][k]表示前i列放了k個的方案,
有f[i][k]=f[i−1][k]+f[i−1][k−1]∗(lon[i]−(k−1)) lon(i)表示當前列的寬度
15.在xxy的面前擺了4包不同品牌的薯條(用a代替)和5包不同品牌的蕃茄醬(用b代替),其中有4個b的品牌與4個a一一對應,另一個b的品牌則無法對應。每次操作,xxy從剩下的a中隨機選擇一個,從剩下的b中隨機選擇一個,一起吃掉。這樣4此以后,a已經沒有了,b還有一包,xxy就會把這包b送給小y。問xxy恰好只吃到一組同品牌的a和b的概率約為( A )
A. 37% B. 36% C. 33% D. 31%
解析:分兩種清況。
第一種,拋棄的b剛好是多余品牌。那么選一對a,b對應正確,其余錯排即可。4*2
第二種,選一對a,b對應正確,再選一個a對應多余b。剩余兩個可簡單列出。 總的433
\((4*2+4*3*3)/P(5,4)\)
13、Kathy函數是這樣定義的:
f(1)=1
f(3)=3
f(2n)=f(n)
f(4n+1)=2f(2n+1)-f(n)
f(4n+3)=3f(2n+1)-2f(n)
對於一個給定的數m=55,求出所有滿足f(n)=n,(n<=m)的自然數n的個數(B )
A. 11 B. 13 C. 17 D. 25
解析:m以內,二進制編碼形態下是回文串的個數。
3、一個圓形水池中等概率隨機分布着四只鴨子,那么存在一條直徑,使得鴨子全在直徑一側的概率是(D)。
A.1/16 B.1/8 C.A.1/4 D.1/2
考慮首先固定一只鴨子,這只鴨子與圓心的連線將圓分為兩部分。
那么剩下的 3 只鴨子都在同一個半圓的概率為\((\frac{1}{2})^3\times 2=0.25\)。
如果令順時針方向的半圓有效的話,概率就是 0.125 。而 4 只鴨子是獨立的,所以總的概率是 0.5 。
4、工廠里有三根鐵棒,分別長為 3,4,5,現在你可以對其中一些鐵棒進行加長,但總的加長長度不能超過10,問有多少種加長的方案使得加長后的鐵棒可以構成三角形。( A )
A.187 B. 274 C.286 D. 572
答案是187
枚舉加長長度i,那么總方案為\(\sum C(i,2)\) 插板法。
然后再減去非法的方案:非法方案計算也是插板法。
具體見XJOI 8835
11、S是集合{1,2,…,2004}的子集,S中的任意兩個數的差不等於4或7,S中最多含有多少個元素?(D)
A.840
B.835
C.910
D.912
1 5 9 2 6 10 3 7 11 4 8 1
時間復雜度
11、T(n)為某個算法輸入為n時的運算次數。如果T(i)(i<=1)為常數,且T(n)=3T(sqrt(n))+log2n,那么以下比T(n)復雜度低有(AC)
A、O(log(n)*sqrt(log(n)) B、O(sqrt(n))
C、O(log(n)) D、O(log^2(n))
若某算法的計算時間表示為遞推關系式:
T(N) = 2T(N / 2) + N log N
T(1) = 1
則該算法的時間復雜度為( )。
A. \(O(N)\)
B. \(O(N \log N)\)
C. \(O(N \log^2 N)\)
D. \(O(N^2)\)
正確答案: C
利用分叉樹來做,根結點nlogn,每次下分兩個子樹,結點為n/2logn/2,一直做到最后,發現最后的log里面的真數為1,也就是0。對每一層加和,第一層nlogn,第二層nlogn/2也就是nlogn-nlog2,以此類推,nlogn-nlog4,nlogn-nlog8,....,nlogn-nlogn。樹高以2為底logn,乘進去為nlognlogn - n/2logn -n/2*(logn)2,就是O(n(logn)2)。(手機百度回答不會插入圖片,我是這么做的,有錯誤還請指出
9、以下關於漸進記號的性質是正確的有:()
A.f(n) =Θ(g(n)),g(n) =Θ(h(n)) ⇒f(n) =Θ(h(n))
B.f(n) =O(g(n)),g(n) =O(h(n)) ⇒h(n) =O(f(n))
C.O(f(n))+O(g(n)) = O(min{f(n),g(n)})
D.f(n) = O(g(n)) ⇔g(n) = O(f(n))
算法分析中,記號O表示漸進上界,記號Ω表示漸進下界,記號Θ表示緊漸進界
11、設有向圖有n個頂點和e條邊,采用鄰接表作為其存儲表示,在進行拓撲排序時,總的計算時間為( B )。
A. O(nloge) B. O(n+e) C. O(ne) D. O(n^2)
???
5、建堆算法可以用遞推式表示:把建堆過程想成先對左子樹建堆(T(n/2)),再對右子樹建堆(T(n/2)),最后對根下溯(O(lg n)),可得:
T(n) = 2*T(n/2) + O(lg n)
求T(n)時間復雜度( C )。
A.O (n^2) B.O (n logn ) C.O (n) D. O (1)
設 \(n = 2^k\)
樹、圖
8、一棵二叉樹的高度為h(根為第一層),所有節點的度為0或2,則此樹最少有()個節點。
A、 2^h-1 B、2h-1 C、2h+1 D、h+1
B
4、一張10個點的完全圖,任意刪去一條邊,它的哈密頓回路的數量為(A)
A、141120 B、322560
C、161280 D、362880
邊:可以a-b和b-a
/2:1231 和1321 重復了。
6、設完全圖G有n個結點,m條邊,則當(C)時,G中存在歐拉回路。
A.m為奇數 B.m為偶數 C.n為奇數 D.n為偶數
7、有n個葉子的哈夫曼樹的結點總數為( D )
A.不確定 B.2n C.2n+1 D.2n-1
14、下列有關圖的說法不正確的是(B)。
A.用邊表示活動的網絡(AOE網)的關鍵路徑是指從源點到終點的路徑長度最長的路徑。
B.對於AOE網絡,加速任一關鍵活動就能使整個工程提前完成。
C.對於AOE網絡,任一關鍵活動延遲將導致整個工程延遲完成。
D.在AOE網絡中,可能同時存在幾條關鍵路徑,稱所有關鍵路徑都需通過的有向邊為橋。
閱讀程序
1、
1 #include<bits/stdc++.h>
2 using namespace std;
3 int arr[101];
4 int main() {
5 int n,gap;
6 cin>>n;
7 for(int i=1; i<=n; i++)
8 cin>>arr[i];
9 for (gap = n / 2; gap > 0; gap /= 2){
10 int k=0;
11 for (int i = gap; i <= n; i++){
12 for (int j= i - gap; j > 0 && arr[j] > arr[j + gap]; j -= gap){
13 swap(arr[j], arr[j + gap]);
14 k++;
15 }
16 }
17 cout<<k<<endl;
18 }
19 for(int i=1; i<=n; i++)
20 cout<<arr[i]<<" ";
21 return 0;
22 }
17、若gap恆為1,20行輸出結果不變。( T )
2、
1 struct Node {
2 ll d,id;
3 bool operator < (const Node &A) const {
4 return d > A.d);
5 }
6 };priority_queue<Node> pq;
7 inline void f() {
8 for(int i=1; i<=n; i++) dis[i]=inf/3;
9 dis[1]=0,pq.push((Node) {0,1});
10 while(!pq.empty()) {
11 Node now=pq.top();
12 pq.pop();
13 int val=now.d,u=now.id;
14 if(dis[u]<val) continue;
15 for(int p=head[u]; p; p=nxt[p]) {
16 int v=a[p];
17 if(dis[u]+b[p]<dis[v]) {
18 dis[v]=dis[u]+b[p];
19 pq.push((Node) {dis[v],v});
20 }
21 }
22 }
23 }
23、對於任意輸入,17行b[p]的值一定不能小於0。( T )
3、
如下代碼用來計算字符串s的前綴函數。
定義前綴函數pi[i]=max(k=0-i){k:s[0…k-1]=s[i-(k-1)…i]}
簡單來說pi[i]就是,子串s[0…i]最長的相等的真前綴與真后綴的長度。
例如:s[0…4]=ababc,pi[3]=2,pi[4]=0
規定:單個字符沒有真前綴和真后綴,pi[0]=0
1 vector<int> prefix_function(string s) {
2 int n = (int)s.length();
3 vector<int> pi(n);
4 for (int i = 1; i < n; i++) {
5 int j = pi[i - 1];
6 while (j > 0 && s[i] != s[j]) j = pi[j - 1];
7 if (s[i] == s[j]) j++;
8 pi[i] = j;
9 }
10 return pi;
11 }
28、該算法是在線算法。( T )
29、pi數組中元素值域為[0,n)。( F )
完善程序
2【好數】對於一個正整數X,如果把X化成二進制數后,如果X的二進制數至少有三個連續的1或者至少有3個連續的0(不能有前導0),那么X就是“好數”。例如8就是“好數”,因為8對應的二進制數是1000,有三個連續的0。整數15也是“好數”,因為15對應的二進制數是1111,也有三個連續的1。整數27就不是“好數”,因為27對應的二進制數是11011,既沒有連續的三個1也沒有連續三個0。
現在給出兩個整數Low、UP,求Low和UP范圍內有多少個“好數”。(0 <= Low <= UP <= 2147483647)
代碼如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll F[125][2][2];
ll Ans,Sum,len,k,n,m;
string sm;
ll Change(ll t) {
if(t<=0)return 0;
Ans=0,k=t,len=0;
sm="";
while(k) { //求t的二進制
char s=k%2+48;
sm=s+sm,k/=2;
}
len=sm.length();
for(int i=2; i<len; ++i) //求t的二進制長度-1位的壞數
Ans+= ① ;
if(t>0) ② ;
k=0;//求t的二進制長度位的壞數
while(++k<=len)
if(sm[k]=='1') {
sm[k]='0';
int l=1;
char r=sm[0];
bool B=0;
for(int i=1; i<=k; ++i)
if( ③ ) {
l++;
if(l==3) {
B=1;
break;
};
} else l=1,r=sm[i];
if(B==0)
Ans+= ④ ;
sm[k]='1';
}
int l=1;
char r=sm[1];
bool B=0;
for(int i=2; i<=len; ++i)
if( ⑤ ) {
l++;
if(l==3) {
B=1;
break;
};
} else l=1,r=sm[i];
if(!B)Ans++;
return t-Ans;
}
int main() {
scanf("%d%d",&n,&m);
F[2][1][0]=F[2][1][1]=F[2][0][0]=F[2][0][1]=1;//初值
for(int i=3; i<=31; ++i) {
F[i][0][0]=F[i-1][0][1];
F[i][1][0]= ⑥;
F[i][1][1]=F[i-1][1][0];
F[i][0][1]= ⑦;
}
Sum=Change(m)-Change(n-1);//前綴和
printf("%d",Sum);
return 0;
}
39.填入①處的代碼是 C
A. F[i-1][1][0]+F[i-1][1][1]
B. F[i-1][0][1]+F[i-1][1][1]
C. F[i][1][0]+F[i][1][1]
D. F[i][0][1]+F[i][1][1]
40.填入②的代碼是 B
A.len++
B. Ans++
C. F[0][0][0]
D. F[1][0][0]
41.填入③⑤處的代碼是 A
A. sm[i]==r
B. sm[i]==’0’
C. sm[i]==’1’
D. sm[i]==sm[k]
42.填入④處的代碼是 D
A. F[len-k][sm[k]-48][0]
B. F[len-k][sm[k-1]-48][0]
C. F[len-k+1][sm[k]-48][0]
D. F[len-k+1][sm[k-1]-48][0]
43.填入⑥和⑦處的代碼分別是 D
A. F[i-1][1][1];F[i-1][0][1]
B. F[i-1][0][1];F[i-1][1][1]
C. F[i-1][1][1]+F[i-1][0][1];F[i-1][0][1]+F[i-1][1][0]
D. F[i-1][0][0]+F[i-1][0][1];F[i-1][1][1]+F[i-1][1][0]