noip提高组初赛有感——
本人第一次考试,感觉还好吧,误打误撞报了个提高组,觉得还是有点亏了(把普及组的脸甩在地上狠狠摩擦那种)。。蒟蒻的我答后面的题时就开始困难了,但多选题答得还可以。考场有提前交卷的,大神总是很多呀…
不过第二大题第一问真的很厉害…表示很慌
第二十四届全国青少年信息学奥林匹克联赛初赛 提高组 C++语言试题
竞赛时间:2018 年 10 月 13 日 14:30~16:30
选手 注意:
试题纸共有 10 页,答题纸共有 2 页,满分 100 分。请在答题纸上作答,写 在试题纸上的一律无效。
不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资 料。
一、单项选择题(共 10 题,每题 2 分,共计 20 分;每题有且仅有一个正确选项)
- 下列四个不同进制的数中,与其它三项数值上不相等的是( )。
A. (269)16
B. (617)10
C. (1151)8
D. (1001101011)2
下列属于解释执行的程序设计语言是( )。
A. C
B. C++
C. Pascal
D. Python中国计算机学会于( )年创办全国青少年计算机程序设计竞赛。
A. 1983
B. 1984
C. 1985
D. 1986设根节点深度为 0,一棵深度为 h 的满 k(k>1)叉树,即除最后一层无任何子节点外,每一层上的所有结点都有 k 个子结点的树,共有( )个结点。
A. (k h+1 - 1) / (k - 1)
B. k h-1
C. k h
D. (k h-1) / (k - 1)设某算法的时间复杂度函数的递推方程是 T(n) = T(n - 1) + n(n 为正整数)及 T(0) = 1,则该算法的时间复杂度为( )。
A. O(log n) B. O(n log n) C. O(n) D. O(n2)表达式 a * d - b * c 的前缀形式是( )。
A. a d * b c * -
B. - * a d * b c
C. a * d - b * c
D. - * * a d b c在一条长度为 1 的线段上随机取两个点,则以这两个点为端点的线段的期望 长度是( )。
A. 1 / 2
B. 1 / 3
C. 2 / 3
D. 3 / 5关于 Catalan 数 Cn = (2n)! / (n + 1)! / n!,下列说法中错误的是( )。
A. Cn 表示有 n + 1 个结点的不同形态的二叉树的个数。
B. Cn 表示含 n 对括号的合法括号序列的个数。
C. Cn 表示长度为 n 的入栈序列对应的合法出栈序列个数。
D. Cn 表示通过连接顶点而将 n + 2 边的凸多边形分成三角形的方法个数。假设一台抽奖机中有红、蓝两色的球,任意时刻按下抽奖按钮,都会等概率获得红球或蓝球之一。有足够多的人每人都用这台抽奖机抽奖,假如他们的策略均为:抽中蓝球则继续抽球,抽中红球则停止。最后每个人都把自己获得的所有球放到一个大箱子里,最终大箱子里的红球与蓝球的比例接近于
( )。
A. 1 : 2
B. 2 : 1
C. 1 : 3
D. 1 : 1为了统计一个非负整数的二进制形式中 1 的个数,代码如下: int CountBit(int x)
{ int ret = 0; while (x) { ret++; ________;
} return ret;
}
则空格内要填入的语句是( )。
A. x >>= 1
B. x &= x - 1
C. x |= x >> 1
D. x <<= 1
二 、不定项选择题(共 5 题,每题 2 分,共计 10 分;每题有一个或多个正确选项,多选或少选均不得分 )
NOIP 初赛中,选手可以带入考场的有( )。
A. 笔
B. 橡皮
C. 手机(关机)
D. 草稿纸2-3 树是一种特殊的树,它满足两个条件:
(1)每个内部结点有两个或三个子结点; (2)所有的叶结点到根的路径长度相同。
如果一棵 2-3 树有 10 个叶结点,那么它可能有( )个非叶结点。
A. 5
B. 6
C. 7
D. 8下列关于最短路算法的说法正确的有( )。
A. 当图中不存在负权回路但是存在负权边时,Dijkstra 算法不一定能求出源点到所有点的最短路。
B. 当图中不存在负权边时,调用多次 Dijkstra 算法能求出每对顶点间最短路径。
C. 图中存在负权回路时,调用一次 Dijkstra 算法也一定能求出源点到所有点的最短路。
D. 当图中不存在负权边时,调用一次 Dijkstra 算法不能用于每对顶点间最短路计算。下列说法中,是树的性质的有( )。
A. 无环
B. 任意两个结点之间有且只有一条简单路径
C. 有且只有一个简单环
D. 边的数目恰是顶点数目减 1下列关于图灵奖的说法中,正确的有( )。
A. 图灵奖是由电气和电子工程师协会(IEEE)设立的。
B. 目前获得该奖项的华人学者只有姚期智教授一人。
C. 其名称取自计算机科学的先驱、英国科学家艾伦•麦席森•图灵。
D. 它是计算机界最负盛名、最崇高的一个奖项,有“计算机界的诺贝尔奖” 之称。
三、 问题求解(共 2 题,每题 5 分,共计 10 分)
甲乙丙丁四人在考虑周末要不要外出郊游。
已知①如果周末下雨,并且乙不去,则甲一定不去;②如果乙去,则丁一定 去;③如果丙去,则丁一定不去;④如果丁不去,而且甲不去,则丙一定不 去。如果周末丙去了,则甲________(去了/没去)(1分),乙________(去 了/没去)(1分),丁________(去了/没去)(1分),周末________(下雨/ 没下雨)(2分)。方程 a*b = (a or b) * (a and b),在 a,b 都取 [0, 31] 中的整数时, 共有_____组解。(*表示乘法;or表示按位或运算;and表示按位与运算)
四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分)
- #include int main() { int x; scanf("%d", &x); int res = 0; for (int i = 0; i < x; ++i) { if (i * i % x == 1) {
++res;
} } printf("%d", res); return 0;
}
输入:15
输出:_________
- #include int n, d[100]; bool v[100]; int main() { scanf("%d", &n); for (int i = 0; i < n; ++i) { scanf("%d", d + i); v[i] = false;
} int cnt = 0;
for (int i = 0; i < n; ++i) { if (!v[i]) {
for (int j = i; !v[j]; j = d[j]) { v[j] = true;
}
++cnt;
}
}
printf("%d\n", cnt); return 0;
}
输入:10 7 1 4 3 2 5 9 8 0 6 输出:_________
- #include using namespace std; string s; long long magic(int l, int r) { long long ans = 0; for (int i = l; i <= r; ++i) {
ans = ans * 4 + s[i] - ‘a’ + 1;
}
return ans;
} int main() { cin >> s; int len = s.length(); int ans = 0;
for (int l1 = 0; l1 < len; ++l1) {
for (int r1 = l1; r1 < len; ++r1) {
bool bo = true;
for (int l2 = 0; l2 < len; ++l2) { for (int r2 = l2; r2 < len; ++r2) { if (magic(l1, r1) == magic(l2, r2) && (l1 != l2 || r1 != r2)) {
bo = false;
}
}
}
if (bo) {
ans += 1;
}
}
}
cout << ans << endl;
return 0;
}
输入:abacaba 输出:_________
- #include using namespace std; const int N = 110; bool isUse[N]; int n, t;
int a[N], b[N];
bool isSmall() { for (int i = 1; i <= n; ++i) if (a[i] != b[i]) return a[i] < b[i]; return false;
}
bool getPermutation(int pos) { if (pos > n) {
return isSmall();
}
for (int i = 1; i <= n; ++i) { if (!isUse[i]) { b[pos] = i; isUse[i] = true;
if (getPermutation(pos + 1)) { return true;
}
isUse[i] = false;
}
}
return false;
} void getNext() { for (int i = 1; i <= n; ++i) {
isUse[i] = false;
}
getPermutation(1); for (int i = 1; i <= n; ++i) { a[i] = b[i];
}
} int main() { scanf("%d%d", &n, &t); for (int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
}
for (int i = 1; i <= t; ++i) { getNext();
}
for (int i = 1; i <= n; ++i) { printf("%d", a[i]);
if (i == n) putchar(’\n’); else putchar(’ ');
}
return 0;
}
输入1:6 10 1 6 4 5 3 2 输出1:_________(3分)
输入2:6 200 1 5 3 4 2 6 输出2:_________(5分)
五、完善程序(共 2 题,每题 14 分,共计 28 分)
- 对于一个1到?的排列?(即1到?中每一个数在?中出现了恰好一次),令??为第?个位置之后第一个比??值更大的位置,如果不存在这样的位置,则?? = ? +
1。举例来说,如果? = 5且?为1 5 4 2 3,则?为2 6 6 5 6。
下列程序读入了排列?,使用双向链表求解了答案。试补全程序。(第二空
2 分,其余 3 分)数据范围 1 ≤ ? ≤ 105。
#include using namespace std; const int N = 100010; int n; int L[N], R[N], a[N]; int main() { cin >> n; for (int i = 1; i <= n; ++i) { int x;
cin >> x;
(1) ; }
for (int i = 1; i <= n; ++i) {
R[i] = (2) ;
L[i] = i - 1;
}
for (int i = 1; i <= n; ++i) { L[ (3) ] = L[a[i]];
R[L[a[i]]] = R[ (4) ];
}
for (int i = 1; i <= n; ++i) {
cout << (5) << " ";
}
cout << endl; return 0;
}
- 一只小猪要买 N 件物品(N 不超过 1000)。
它要买的所有物品在两家商店里都有卖。第 i 件物品在第一家商店的价格是 a[i],在第二家商店的价格是 b[i],两个价格都不小于 0 且不超过 10000。如果在第一家商店买的物品的总额不少于 50000,那么在第一家店买的物品都可以打 95 折(价格变为原来的 0.95 倍)。
求小猪买齐所有物品所需最少的总额。
输入:第一行一个数 N。接下来 N 行,每行两个数。第 i 行的两个数分别代表 a[i],b[i]。输出:输出一行一个数,表示最少需要的总额,保留两位小数。
试补全程序。(第一空 2 分,其余 3 分)
#include #include using namespace std;
const int Inf = 1000000000; const int threshold = 50000; const int maxn = 1000;
int n, a[maxn], b[maxn]; bool put_a[maxn]; int total_a, total_b; double ans; int f[threshold];
int main() { scanf("%d", &n);
total_a = total_b = 0;
for (int i = 0; i < n; ++i) { scanf("%d%d", a + i, b + i); if (a[i] <= b[i]) total_a += a[i]; else total_b += b[i];
}
ans = total_a + total_b; total_a = total_b = 0; for (int i = 0; i < n; ++i) { if ( (1) ) { put_a[i] = true; total_a += a[i];
} else {
put_a[i] = false; total_b += b[i];
}
}
if ( (2) ) { printf("%.2f", total_a * 0.95 + total_b); return 0;
} f[0] = 0;
for (int i = 1; i < threshold; ++i) f[i] = Inf;
int total_b_prefix = 0; for (int i = 0; i < n; ++i) if (!put_a[i]) { total_b_prefix += b[i];
for (int j = threshold - 1; j >= 0; --j) { if ( (3) >= threshold && f[j] != Inf) ans = min(ans, (total_a + j + a[i]) * 0.95 + (4) );
f[j] = min(f[j] + b[i], j >= a[i] ? (5) : Inf); }
}
printf("%.2f", ans); return 0;
}
第二十四届全国青少年信息学奥林匹克联赛初赛提高组参考答案一、单项选择题(共 10 题,每题2 分,共计20 分)
1 2 3 4 5 6 7 8 9 10
D D B A D B B A D B
二、 不定项选择题(共 5 题,每题 2 分,共计 10 分;每题有一个或多个正确选项,没有部分分)
1 2 3 4 5
AB CD ABD ABD BCD
三、 问题求解(共 2 题,每题 5 分,共计10 分)
- 去了 没去 没去 没下雨 (第4 空 2 分,其余 1 分)
- 454
四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) - 4
- 6
- 16
- 输出1:2 1 3 5 6 4 (3分) 输出2:3 2 5 6 1 4 (5分)
五、完善程序(共计 28 分,以下各程序填空可能还有一些等价的写法,由各省赛区组织本省专家审定及上机验证,可以不上报 CCF NOI 科学委员会复核)
1
. (1) a[x] := i a[x] = i 3
(2) i + 1 2
(3) R[a[i]] 3
(4) a[i] 3
(5) R[i] 3
2
. (1) a[i] * 0.95 <= b[i] 或 b[i] >= a[i] * 0.95 2
(2) total_a >= threshold 或 threshold <= total_a 或 total_a >= 50000 或 50000 <= total_a 3
(3) total_a + j + a[i] 3
(4) f[j] + total_b - total_b_prefix 3
(5) f[j - a[i]] 3
noip提高组初赛有感——相关推荐
- NOIP提高组初赛[选择题知识点汇总]
[常识] 1. 从(C)年开始,NOIP 竞赛将不再支持Pascal 语言 A. 2020 B. 2021 C. 2022 D. 2023 2.设A和B是两个长为n的有序数组,现在需要将A和B合并成一 ...
- 历年NOIP提高组初赛选择解析(至2006年。未完结)
这又是一篇没有代码的题解 这个题解不会根据一年年的来,而是根据题型来的.大家收好啊-orz 题型1--数学题 1.1集合计算 1.(NOIP2004–T1-单选)设全集 I = I= I={ a , ...
- NOIP提高组初赛模拟赛赛后感想
记录:2018.9.25日,山大华特卧龙学校信息队进行了一次初赛的模拟考- 没错,就是2012年的 结果蒟蒻考了48 44 (批错分了QAQ)分,勉强过了当年的线-(SD) 单选题目错了2道题,其中一 ...
- NOIP提高组初赛知识点解析错题本
文章目录 前言 正题 知识点:各种东西的简称 知识点:冯诺依曼 知识点:64位处理器 两大优点 误区 知识点:软件库名称 知识点:CPU 知识点:面向对象程序设计与面向对象语言 知识点:可以带入考场的 ...
- NOIP 2015 提高组 初赛
NOIP 2015 提高组 初赛 疑难点 学习 感悟. 一. 3. 示例如下(来自自个的理解): 101.101 十进制 转十进制1*10^2+0*10^1+1*10^0+1*10^-1+0*10^- ...
- NOIP 2017 提高组 初赛
NOIP 2017 提高组 初赛 做题感悟. 五.完善程序,是本张试卷最简单的题目,两道题做完,大约花了10分钟.2017-10-17 18:25 对了答案,破天荒,全对. 1.(大整数除法) 有如下 ...
- NOIP 2016 提高组 初赛
NOIP 2016 提高组 初赛 疑难点 学习 感悟. 一. 2.该题81容易看成81次按键,实际是屏幕上出现的第81个字符,实际按键次数超过81次. 3.异或,相同位上,数字相同取0,数字不同取1, ...
- NOIP2018提高组初赛准备
NOIP2017提高组初赛错题 一.单项选择题(共15 题,每题1.5 分,共计22.5 分:每题有且仅有一个正确选项) 4. 2017年10月1日是星期日,1949年10月1日是( ). A. 星期 ...
- 2018.12.08【NOIP提高组】模拟B组总结(未完成)
2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...
最新文章
- 目标检测+mAP+IoU
- SQL server2008 无法启动调试存储过程
- 互联网周刊:谁是下一个IE?
- 蓝桥杯java第三届决赛第四题--DNA比对
- kafka生产者、消费者消息操作命令
- 入门Python,这些优点你要知道
- 6还是5?大还是小?看完这些动图,感觉数学白学了
- Element Ui 关闭对话框清空验证消息,清除form表单的操作
- Axure9(基础二)
- pythonmt4通讯swot矩阵_swot分析矩阵范例
- 轻松访问Google Chrome浏览器中的浏览历史记录
- eclipse java验证码_spring整合kaptcha验证码
- 记忆日语的奥秘—日语汉字读音变化
- opencv及图像基本处理
- 微信公众号 Markdown 排版工具
- Week_eight
- “21天好习惯“ 第十六期 — 16之黑马面面移动端布局(二)
- Java实现宿舍管理系统、基于java、JDBC、GUI(含源文件/综合项目)
- 密码编码学与网络安全(2):对称密码之传统加密技术
- Python实现多层感知器网络