题库 信息学奥赛题库 题目列表 2023年CSP-S1阅读程序题3:01 #include &lt...
组合题

2023年CSP-S1阅读程序题3:

01 #include <vector>
02 #include <algorithm>
03 #include <iostream>
04
05 using namespace std;
06
07 bool fo(vector<int>& a, int m, int k){
08 int s =0;
09 for(int i =0,j =0; i<a.size(); i++){
10 while (a[i]- a[j]>m)j++;
11 s += i -j;
12 }
13 return s >= k;
14}
15
16 int f(vector<int>& a, int k){
17 sort(a.begin(), a.end());1
8
19 int g =0;
20 int h = a.back()- a[0];
21 while(g< h){
22 int m = g+(h -g)/ 2;
23 if(fo(a,m, k)){
24 h = m;
25 } else {
26 g = m+1;27 }28 }29
30 return g;31}32
33 int main(){34 int n,k;35 cin >> n >> k;36 vector<int> a(n,0);37 for(int i =o; i<n; i++){
38 cin >> a[i];
39 }
40 cout<< f(a,k)<< endl;
41 return 0
42}

假设输入总是合法的且|a[i]l≤108、n≤10000和1≤k≤n(n-1)/2,完成下面的判断题和单选题:

第1题 判断

将第24行的“m”改为“m-1”,输出有可能不变,而剩下情况为少1。(    )

A.
正确
B.
错误
第2题 判断

将第22行的“g+(h-g)/2”改为“(h+g)>>1”,输出不变。(    )

A.
正确
B.
错误
第3题 判断

当输入为“572-451-3”,输出为“5”。(     )

A.
正确
B.
错误
第4题 单选

设a数组中最大值减最小值加1为A,则f函数的时间复杂度为(    )。

A.

0(n logA)

B.

0(n²logA) 

C.

0(n log(nA)) 

D.

0(n log n)

第5题 单选

将第10行中的“>”替换为“>=”,那么原输出与现输出的大小关系为(   )。

A.

一定小于

B.

一定小于等于且不一定小于

C.

一定大于等于且不一定大于

D.

以上三种情况都不对

第6题 单选

当输入为“582-538-12”时,输出为(     )。

A.

“13”

B.

“14”

C.

“8”

D.

“15”

题目信息
阅读程序 2023年 初赛
-
正确率
0
评论
173
点击