NOIp初赛题目整理
NOIp初赛题目整理
这个 blog 用来整理扶苏准备第一轮 csp
时所做的与 csp
没 有 关 系 的历年 noip-J/S
初赛题目,记录了一些我从不知道的细碎知识点,还有一些憨憨题目,不定期更新。
1、(07senior,5) 在C 语言中,表达式 \(23~\mid~2~\land^~5\) 的值是( )
A. \(23\) B.\(1\) C.\(18\) D.\(32\) E.\(24\)
Answer:A
Solution:这题一看就是要考运算符优先级来着。在 \(C\) 语言中,按位与大于按位异或大于按位或,这里的大于指优先级大于,优先级越大越优先计算,因此计算过程为 \(2~\land~5~=~7\)。然后计算 \(23~\mid~7 = 23\)。
需要指出的是,左右移的优先级大于上述三个运算,因此 \(C\) 语言表达式
1 | p << 1
是先算p << 1
,再对 \(1\) 取或,例如 \(1~\mid~1~<<~3\) 的答案是 \(9\)。
2、(07senior,12) 与十进制数 \(17.5625\) 对应的 \(8\) 进制数是( )。
A.\(21.5625\) B.\(21.44\) C.\(21.73\) \(D.21.731\)
Answer:B
Solution:这里介绍一下分数的进制转换。先考虑 \(10\) 进制转换成 \(k\) 进制。
首先整数部分按照整数的进制转化进行,即不断除以进制数再取余数。
然后将原数不断的去掉整数部分后乘 \(k\),第 \(i\) 次乘 \(k\) 后整数部分的值即为答案第 \(10^{-i}\) 位的值,一直做直到达到精度位数要求。
例如:\(17.5625\),整数部分被转换为 \(21\),去掉整数部分为 \(0.5625\),乘 \(8\) 得到 \(4.5\),因此十分位为 \(4\),\(4.5\) 去掉整数部分为 \(0.5\),乘 \(8\) 得到 \(4.0\),因此百分位为 \(4\)。\(4.0\) 去掉整数部分后为 \(0\),因此后面的位数都是 \(0\)。
对于 \(k\) 进制转 \(10\) 进制的情况,则整数部分依旧按照整数转换法则转换,对于小数部分,将 \(k^i\) 分位的数乘上 \(\frac{1}{k^i}\),相加即可得到 \(10\) 进制小数部分的值。
3、(07senior,14,不定项选择) 已知 \(7\) 个结点的二叉树的先根遍历是
1 2 4 5 6 3 7
(数字为结点的编号,以下同),后根遍历是4 6 5 2 7 3 1
,则该二叉树的可能的中根遍历是( )A.
4 2 6 5 1 7 3
B.4 2 5 6 1 3 7
C.4 2 3 1 5 4 7
D.4 2 5 6 1 7 3
Answer:A B D
Solution:二叉树遍历序什么的早都忘干净了……
众所周知,二叉树一共有三种深度优先遍历序,分别是先序遍历,中序遍历和后序遍历。这里先中后指的是记录根的时间,而左右子树的顺序总是先左子树再右子树。例如先序遍历,则先记录当前子树的根节点,然后递归对左子树做先序遍历,再递归对右子树做先序遍历;而中序遍历则先对左子树递归做中序遍历,然后记录根节点,最后对右子树递归做中序遍历。
对于一棵树,只要确定中序遍历序和另外任意一个深度优先遍历序,即可唯一确定这棵树的形态,但是只知道先序遍历和后序遍历则不能唯一确定这棵树的形态。需要指出的是,确定先序遍历和后序遍历以后,即可确定节点间的父子关系,但是无法区分左右节点。
对于本题,首先可以铁憨憨枚举四个选项,这样即可得到中序遍历和先序遍历,再验证后序遍历即可。
考虑更一般化的做法,通过已知的两个遍历序确定节点间的父子关系即可。
例如,根据先序遍历,\(2\) 一定是 \(1\) 的孩子,根据后序遍历,\(3\) 一定是 \(1\) 的孩子,因此 \(2,~3\) 一定是 \(1\) 的两个孩子,又因为 \(2\) 在先序遍历中比 \(3\) 先出现,所以 \(2\) 是左孩子,\(3\) 是右孩子。
又根据先序遍历的性质,右孩子左侧的一定都是左子树或根,因此 \(2,~4,~5,~6\) 都在根的左子树内。根据先序遍历,\(4\) 要么是 \(2\) 的孩子,要么是 \(2\) 的兄弟。但由于 \(3\) 是 \(2\) 的兄弟,所以 \(4\) 是 \(2\) 的孩子。
根据后序遍历,可以确定 \(5\) 是 \(2\) 的另一个孩子,又由于 \(4\) 在 \(5\) 之前出现,因此 \(4\) 是左孩子,\(5\) 是右孩子。
根据先序遍历,\(6\) 是 \(5\) 的孩子,但是由于 \(5\) 只有一个孩子,无法确认左右。至此,左子树的父子关系已经全部确定,类似的可以确定右子树的父子关系,然后即可确定可能的中序遍历。
今年CSP
只考选择题来着,我还是选择铁憨憨枚举选项吧
4、(07senior,18,不定项选择) 在下列关于算法复杂性的说法中,正确的有( )。
A. 算法的时间复杂度,是指它在某台计算机上具体实现时的运行时间
B. 算法的时间复杂度,是指对于该算法的一种或几种主要的运算,运算的次数与问题的规模之间的函数关系
C. 一个问题如果是NPC类的,就意味着在解决该问题时,不存在一个具有多项式时间复杂度的算法.但这一点还没有得到理论上的证实,也没有被否定
D. 一个问题如果是NP类的,与C有相同的结论
Answer:BC
Solution:首先
A,B
的对错显然,这边记录一下有关P问题,NP问题,NPC问题,NP-Hard问题的有关定义。对于一个问题,如果它可以使用多项式时间复杂度的算法进行求解,则它是一个 P问题(polynomial problem),这里
polynomail
指的是 “多项式的”。例如,给定 \(n\) 个数对他们按照不降序进行排序,可以使用 \(O(n \log n)\) 的算法解决,因此这个问题是一个P问题。对于一个问题,如果它可以用多项式时间复杂度的算法来验证一个解的正确性,则他是一个 NP问题(Non-deterministic Polynomial Problem),这里
Non-deterministic
指 “不确定的”,NP问题的中文直译为 “非确定性多项式问题”。这里不要求对原问题进行求解,只要给出原问题的一个解以后就可以用多项式的算法来验证这个解是否正确的问题,都被称为 NP 问题。例如,“对于一张 \(n\) 个点 \(m\) 条边的有向图,求它的一条回路满足经过每个节点恰好一次”这个问题(哈密尔顿回路)想要求解目前只有指数级的枚举每条边的选择情况,但是一旦我给出这个问题的一个解,我便可以使用 \(O(m)\) 的算法来轻松验证这个解是否正确,因此这个问题是一个 NP 问题。同样的,对于上面一段的排序问题,如果你给出了它的一个解,我显然可以 \(O(n)\) 去验证这个解是否正确,因此“给 \(n\) 个数进行排序” 也是一个 NP 问题。一个可以证明的事实是,一个 P 问题一定是一个 NP 问题,也即一个可以用多项式时间复杂度求解的问题一定是可以用多项式时间复杂度检验一个解的正确性。因此,P 问题集合是 NP 问题集合的子集。而 P 问题集合是否等于 NP 问题集合,就是著名的 P-NP 问题,又成为 P =? NP 问题。目前的普遍观点是不等于,但是无法给出证明。
归约:对于一个问题 \(A\),如果他能经过多项式时间复杂度的转化而转化成问题 \(B\),也即得出问题 \(B\) 的解以后可以用多项式的时间复杂度转化为问题 \(A\) 的解,则称 \(A\) 可以 归约 为 \(B\)。例如将一元一次方程加上一个系数为 \(0\) 的二次项以后可以通过求解一元二次方程的方法求解,因此说求解一元一次方程可以归约为求解一元二次方程。一个显然的事实是归约具有传递性,即若 \(A\) 可以归约为 \(B\),\(B\) 可以归约为 \(C\),则 \(A\) 可以归约为 \(C\)。显然,只要可以使用多项式复杂度解决 \(C\),即可使用多项式复杂度解决 \(A\)。
存在一个 NP 问题 \(A\),使得所有 \(NP\) 问题都可以归约为 \(A\) 问题,而 \(A\) 问题有很多个并且他们是完全等价的,所有的 \(A\) 问题被称为 NPC问题(Non-deterministic Polynomial Complete Problem)。显然只要给任意一个 NPC 问题找到一个多项式算法,即可用多项式时间复杂度解决所有 NP 问题,从而证明
P = NP
,但是目前并不能在多项式时间复杂度内解决任何一个 NPC 问题。根据第一句话,我们给出 NPC 问题的定义:1、该问题是一个 NP 问题
2、任何一个 NP 问题都可以通过有限次的归约最终归约为该问题
只要满足上述两个条件的问题,都被称为 NPC 问题。第一个 NPC 问题是逻辑电路问题:给定一个有多个输入端的和多个逻辑门以及一个输出端的逻辑电路,求逻辑门的一个输入满足这个逻辑门的输出端为 true。
对于上面 NPC 问题的定义,如果一个问题满足第二条,但不一定满足第一条,则其是一个 NP-Hard问题(Non-deterministic Polynomial Hard Problem)。根据定义,NP-Hard 问题可以被任何一个 NP 问题使用多项式的时间复杂度归约到,但是自身不一定是一个 NP 问题。
因此我得出结论:NOIp的大部分题目都是 P (雾)
(07senior,21) 给定 \(n\) 个有标号的球,标号依次为1,2,…,n。将这 \(n\) 个球放入 \(r\) 个相同的盒子里,不允许
有空盒,其不同放置方法的总数记为 \(S(n,r)\),求 \(S(7,~4)\)。Answer:350
Solution:没打算做填空来着,但是看到第二类斯特灵数就记一下吧……反正我也忘了。
题面即为第二类斯特灵数的定义。当求 \(S(i, j)\) 时,假设前 \(i-1\) 个球都已经放到了盒子里,现在考虑第 \(i\) 个球:
如果前 \(i-1\) 个球放到了 \(j\) 个盒子里,那么这个球随便找个盒子放即可,方案数为 \(j \times S_{i - 1,j}\)
如果前 \(i - 1\) 个球放到了 \(j - 1\) 个盒子里,那么这个球只能自己新放一个盒子,方案数为 \(S_{i - 1, j -1}\)。
根据加法原理,\(S_{i,j} = S_{i - 1, j - 1} + j \times S_{i - 1, j}\)
(07junior,7) LAN的含义是( )
A.因特网 B.局域网 C.广域网 D.城域网
Answer:B
Solution:
休学不考 IT 会考的报应来了局域网:LAN(Local Area Network);广域网:WAN(Wide Area Network);城域网:MAN(Metropolitan Area Network)
下次还是对着英文蒙吧
NOIp初赛题目整理的更多相关文章
- Noip往年题目整理
Noip往年题目整理 张炳琪 一.历年题目 按时间倒序排序 年份 T1知识点 T2知识点 T3知识点 得分 总体 2016day1 模拟 Lca,树上差分 期望dp 144 挺难的一套题目,偏思维难度 ...
- Noip 2017 题目整理
目录 2017Noip: 小凯的疑惑 时间复杂度 逛公园 奶酪 宝藏(50fen) 列队(QAQ不会,以后再研究吧) 2017Noip: 小凯的疑惑 题目描述 小凯手中有两种面值的金币,两种面值均为正 ...
- 史上最全NOIP初赛知识点
CSP-J/S 第一轮知识点选讲 \(NOIP\)(全国青少年信息学奥林匹克竞赛)于2019年取消.取而代之的是由\(CCF\)推出的非专业级软件能力认证,也就是现在的\(CSP-J/S\).作为一名 ...
- NOIP初赛:完善程序做题技巧
最近写的文章好像还很多的.那么今天我们来讨论NOIP初赛的题型--完善程序.完善程序相对是比较难的题目了.全卷100分,完善程序占了大概26分,占比非常大.如果和英语考试试卷做比较,相当于首字母填空( ...
- NOIP初赛 之 逻辑运算
NOIP初赛 之 逻辑运算 逻辑运算先掌握各种运算,注意运算符的级别比较,做题是要细心.在NOIP中一般一题,分值为1.5分. 概念介绍: 非:not ¬ 与:and ∧ 或:o ...
- NOIP初赛知识点大全-普及+提高组
NOIP初赛知识点大全-普及+提高组 https://mp.weixin.qq.com/s/vSXLDxmbBoFfZPzD8lrt3w
- 【数学】NOIP数论内容整理
NOIP数论内容整理 注:特别感谢sdsy的zxy神仙以及lcez的tsr筮安帮助审稿 一.整除: 对于\(a,b~\in~Z\),若\(\exists~k~\in~Z\),\(s.t.~b~=~k~ ...
- NOIP初赛前一日记
2018年10月12日,早晨7:25于机房. 早晨的鄞中,晨风还有点清冷.看着电脑上翻遍的资料,心里实在是有一种说不出的感觉. 说出来也算是丢脸——作为浙江选手,我为了NOIP2018的初赛,停课了一 ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
随机推荐
- linux下发布项目
查看端口
- 【C++】如何使用GCC生成动态库和静态库
一.静态库和动态库的定义及区别 程序编译的四个过程: 1.预处理 展开头文件/宏替换/去掉注释/条件编译(.i后缀) 2.编译 检查语法,生成汇编(.s后缀) 3.汇编 汇编代码转换成机 ...
- Dart面向对象编程(二)
继承: person.dart: class Person{ String name; int age; String _birthday; bool get isAdult => age &g ...
- eclipse中修改项目名
把项目名springboot-demo改成springboot-rabbitmq 第一步: 选中项目,点击F2,修改项目名第二步: 修改.project文件第三步: 修改.setting/org.ec ...
- Redis 分析部分功能所解决的问题
前言:说到缓存,大家都会想到redis,而redis中又有各种眼花缭乱的功能,今天就来看看这些功能能解决的问题. Redis官方简介 Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存 ...
- .Net Core实战教程(二):设置Kestrel的IP与端口的几种方法
.Net Core实战教程(二):设置Kestrel的IP与端口的几种方法 1.直接写在代码方式 Program.cs代码如下: using System; using System.Collecti ...
- json解析常见异常
(1) : org.json.JSONException: Expected a ',' or '}' at 80 [character 81 line 1] 原因:出现乱码了, 导致json格式 ...
- Java常用类object详解
1.Object概述: 类Object是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括数组)都实现这个类的方法. 2.构造方法详细信息: Object只有一个无参构造方法,因为ob ...
- JDBC注册驱动程序3种方式
以MySQL的驱动为例,介绍注册驱动程序的3种方式 1:Class.forName("com.mysql.cj.jdbc.Driver");// 加载数据库驱动 package c ...
- 竟然有人在群里谈交钱培训PI。。。。等哥哥有时间,断了你们的财路
PI是工具,很不错的工具.统一管理接口,这点对大公司来说还是有必要的.而且PI的日志记录很详细,用的好的话,绝对物超所值.