2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第2题)

2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第2题)

第2题
cpp 复制代码
1  #include <iostream>
2  #include <cstdlib>
3  using namespace std;
4   
5  int n;
6  int d[10000];
7   
8  int find(int L, int R, int k) {
9      int x = rand() % (R - L + 1) + L;
10      swap(d[L], d[x]);
11      int a = L + 1, b = R;
12      while (a < b) {
13          while (a < b && d[a] < d[L])
14              ++a;
15          while (a < b && d[b] >= d[L])
16             --b;
17          swap(d[a], d[b]);
18      }
19      if (d[a] < d[L])
20          ++a;
21      if (a - L == k)
22          return d[L];
23      if (a - L < k)
24          return find(a, R, k - (a - L));
25      return find(L + 1, a - 1, k);
26  }
27   
28  int main() {
29      int k;
30      cin >> n;
31      cin >> k;
32      for (int i = 0; i < n; ++i)
33          cin >> d[i];
34      cout << find(0, n - 1, k);
35      return 0;
36  }              

假设输入的 n,k 和 di都是不超过 10000的正整数,且 k不超过 n,并假设 rand() 函数产生的是均匀的随机数,完成下面的判断题和单选题:

  • 判断题

    1. 第 9行的 x 的数值范围是 L+1 到 R,即 L+1,R。( )

      A. 正确 B. 错误

    2. 将第 19 行的 d[a] 改为 d[b],程序不会发生运行错误。( )

      A. 正确 B. 错误

  • 单选题

    1. (2.5 分)当输入的 di是严格单调递增 序列时,第 17 行的 swap 平均执行次数是( )。

      A. O(nlog⁡n)

      B. O(n)

      C. O(log⁡n)

      D. O( n 2 n^2 n2)

    2. (2.5 分)当输入的 di 是严格单调递减 序列时,第 17 行的 swap 平均执行次数是( )。

      A. O( n 2 n^2 n2)

      B. O(n)

      C. O(nlog⁡n)

      D. O(log⁡n)

    3. (2.5 分)若输入的 dii,此程序①平均的时间复杂度和②最坏情况下的时间复杂度分别是( )。

      A. O(n) , O( n 2 n^2 n2)

      B. O(n) , O(nlog⁡n)

      C. O(nlog⁡n) , O( n 2 n^2 n2)

      D. O(nlog⁡n) , O(nlog⁡n)

    4. (2.5 分)若输入的 di 都为同一个数,此程序平均的时间复杂度是( )。

      A. O(n)

      B. O(log⁡n)

      C. O(nlog⁡n)

      D. O( n 2 n^2 n2)

判断题答案及解析
  1. 错误 。第9行的x = rand() % (R - L + 1) + L,随机数范围是[L, R],包括L,而不是[L+1, R]
  2. 正确 。原程序在区间长度为1时,a = L+1会越界访问;改为d[b]后,b = R = L在合法范围内,避免了运行错误。
单选题答案及解析
  1. A/B。错题,不随便算一个答案。
  2. B。对于严格单调递减序列,同理,平均交换次数也为O(n)。
  3. A 。输入为i(递增序列)时,平均时间复杂度为O(n),最坏情况(每次选到最小或最大)为O(n²)。
  4. D。输入全相同时,每次划分只能排除一个元素,递归深度为n,总比较次数为O(n²)。

专栏推荐:信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html


各种学习资料,助力大家一站式学习和提升!!!

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
	cout<<"##########  一站式掌握信奥赛知识!  ##########";
	cout<<"#############  冲刺信奥赛拿奖!  #############";
	cout<<"######  课程购买后永久学习,不受限制!   ######";
	return 0;
}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

· 文末祝福 ·

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
	cout<<"跟着王老师一起学习信奥赛C++";
	cout<<"    成就更好的自己!       ";
	cout<<"  csp信奥赛一等奖属于你!   ";
	return 0;
}
相关推荐
hold?fish:palm14 分钟前
7 接雨水
开发语言·c++·leetcode
郝学胜-神的一滴1 小时前
中级OpenGL教程 022:探秘三维世界的血脉传承——物体父子关系与矩阵递归奥义
c++·线性代数·unity·矩阵·游戏引擎·unreal engine·opengl
ch0sen1pm2 小时前
刚学完 CAS 原子操作,我花了一晚上写了三个无锁队列
c++
qeen872 小时前
【C++】vector的模拟实现详解(二)
c++·学习·算法·迭代器·stl
j7~2 小时前
【C++】C++ 继承全解析:从基本语法到菱形继承的底层原理
开发语言·c++·继承·组合·虚继承·#暑假·七月创作之星博客挑战赛
数行拙笔2 小时前
C++客户端---String类型
开发语言·c++·bootstrap
草莓熊Lotso3 小时前
【Linux网络】深入理解Linux IO多路复用:从本质到select服务器实战
linux·运维·服务器·c语言·网络·数据库·c++
selfsongs14 小时前
指针、内存管理、现代 C++ 特性
c++
吃着火锅x唱着歌15 小时前
Effective C++ 学习笔记 条款37 绝不重新定义继承而来的缺省参数值
c++·笔记·学习
2401_8414956415 小时前
【数据结构】B+树
数据结构·数据库·c++·b+树·概念·结构·操作原理