NOIP2018提高组初赛知识点
(传说,在神秘的初赛中,选手们经常互相爆零以示友好……)
历年真题:ti.luogu.com.cn
以下标题中打*的是我认为的重点内容
一、关于计算机
(一)计算机组成
硬件组成:
1. 控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
2. 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
3. 存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
4. 输入(Input system):输入设备是计算机的重要组成部分,输入设备与输出设备合称为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
5. 输出(Output system):输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。微机常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。
【CPU(中央处理器)=运算器+控制器+寄存器
存储器=内存储器+外存储器】
BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
随机存储器RAM的“随机”指“随时访问”
断电后可以保存数据:硬盘,ROM
断电后不可以保存数据:显存(显卡内存),RAM,CPU
面向过程语言 :C
面对对象的高级语言:C++,Java
(二)计算机发展史
(这部分中部分内容参考洛谷日报第45期。感谢)
(三)计算机中各存储单位的进位关系:
1TB=1024GB,1GB=1024MB,1MB=1024KB
1KB=1024B,1B(字节)=8bit(位)
二、二进制原码、反码与补码
(这部分中部分内容参考https://blog.csdn.net/jq_ak47/article/details/45338061。感谢)
(一)原码
在计算机中(以八位机为例),我们知道都用二进制来存储数
如5,二进制为00000101
那么负数怎么存储?将最高位设为符号位,正数为0,负数为1
如-5,二进制为10000101
-6,为10000110
以上叫做原码
(二)反码
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
如7,原码为00000111,反码为00000111
如-10,原码为10001010,反码为11110101
(三)补码
正数的补码是其本身,负数的补码是反码加一
补码有什么用呢?解决负整数加减法
比如我们计算16-8 或是 16+(-8)
如果用原码计算
0 0 0 0 1 0 0 0
+1 0 0 0 0 1 0 0
————————
1 0 0 0 1 1 1 1
将10001111转换为二进制,结果为-24,显然不对
如果用补码呢?
0 0 0 0 1 0 0 0
+ 1 1 1 1 1 1 0 0
————————
1 0 0 0 0 0 1 0 0
*注意,此处用八位二进制,而计算结果是九位二进制,所以最高位自动省略
这样结果是-8,正确
若要将补码转化为原码,正数不变,负数先-1再取反码就可以了
三、P问题、NP问题与NPC问题
(这部分中部分内容参考http://www.matrix67.com/blog/archives/105。感谢)
我就说的简略一点了(主要是怕自己忘了),详见上面网址
(一)P问题
每个问题的算法都有时间复杂度
O(1),O(N),O(NlogN),O(n2)等n不在指数为的复杂度为多项式级复杂度
O(N!),O(2n)等复杂度是非多项式级的
可以找到一个多项式级复杂度算法的问题是P问题
NOI系列考的绝大多数问题都是P问题
注:如果一个问题不存在多项式空间的算法,那它一定不是 P 类问题(详见NOIP2012提高组初赛第20题)
(二)NP问题
一个解可以用多项式级复杂度检验的问题是NP问题
注:找不到多项式复杂度解的(非P问题)不一定是NP问题
易得NP=P。即所有P问题都是NP问题
至于P=NP,大家感兴趣的话可以自己研究研究(滑稽护体)
(三)NPC问题(NP-完全问题)
先讲一下“约化”
有两个问题,问题A和问题B
若可以用问题B的算法来解决问题A,那么问题A可以约化为问题B
比如,一元一次方程可以约化为一元二次方程
约化具有传递性,即A可以约化成B,B可以约化成C,那么A一定可以约化成C
可以看出,在不断约化的过程中,算法的时间复杂度逐渐增高,解决的问题也越来越广
大胆猜测,是否可以将所有的NP问题都约化成一个问题?解决了这个问题就能解决所有NP问题?
答案是肯定的!
而且这不仅是一个问题,还是一类问题
这类问题叫做NPC问题。
一个问题满足以下两条,它就是NPC问题:
1、它是NP问题
2、所有的NP问题都可以约化到它
NPC问题的鼻祖是逻辑电路问题,有兴趣的读者可以自行了解。
另外说一下NP-hard问题,它满足NPC问题的第二条但不满足第一条。它的范围比NPC问题广。
*四、进制转换
(一)二、四、八、十六互转通用方法:
以八进制转二进制为例
先把关系表列出来:
八进制数 |
二进制数 |
0 |
000 |
1 |
001 |
2 |
010 |
3 |
011 |
4 |
100 |
5 |
101 |
6 |
110 |
7 |
111 |
二转八:
例如:10010011.1011
2^3=8
所以使用三位一合的方法。若整数部分位数不是三的倍数,在最高位前补0;若小数部分位数不是三的倍数,在末尾补0。接着以小数点为分界,从左到右分别转化小数部分和整数部分。
对照上面的表 10 010 011. 101 100
2 2 3 . 5 4
所以(10010011.1011)2=(223.54)8
八转二:
同理,一位三分法
例如:7643
对照上面的表 7 6 4 3
111 110 100 011
注:十六进制等进制中,A代表10,B代表11,以此类推
(二) 二转十和十转二
二转十:个位*2^0,十位*2^1,百位*2^2…… 若是小数,十分位*2^-1,百分位*2^-2……然后加起来就行了
十转二:整数部分:不断除以2,直到商为0,倒取各阶段余数
小数部分:不断乘以2,直到积为1,正取各阶段整数
如10.25转化为二进制
10÷2=5……0
5÷2=2……1
2÷2=1……0
1÷2=0……1
倒着取余数,1010即为整数部分
0.25*2=0.5……0
0.5*2=1……1
正着取整数,0.01即为小数部分
将两部分合起来,得到10.25=(1010.01)2
(三)其它
其它2^n的进制如要转化为十进制,先转化为二进制,再转化为十进制。
十进制转化成它们同理。
**五、排序算法
基本是每年必考!
(这部分中部分内容参考http://blog.csdn.net/whuslei/article/details/6442755/ 和 https://blog.csdn.net/xiazdong/article/details/8462393。感谢)
九大排序算法:(加上桶排序就是十个)
计数排序 O(N+K) O(N+K) O(N+K) O(n+K) 稳定 简单
排序算法稳定,指排序前后数值相同的两个数相对位置不会改变
稳定:插、归、冒、基、计
不稳定:快、堆、希、选
需要额外空间:归、基、计
不需要额外空间:插、希、冒、快、堆、选
运用分治思想的:归、快
时间复杂度是O(NlogN)的:堆、快、归(希尔排序的时间复杂度依赖于增量的选择,这里不做讨论)
最慢是O(N2)的:插、冒、快、选
最快是O(N)的:插、冒(改进后)
最快最慢相同的:冒(不改进)、选、堆、归、基,计
注意:近些年题目考的越来越“活”了,千万不要死记硬背!
example:(NOIP2017提高组)
11.设 A 和 B 是两个长为 n 的有序数组,现在需要将 A 和 B 合并成一个排好序的 数组,请问任何以元素比较作为基本运算的归并算法最坏情况下至少要做 ( )次比较。
[黑人问号.jpg]
答案:2n-1
六、时空复杂度
(一)时间复杂度
(这部分中部分内容参考https://www.luogu.org/blog/Chanis/master。感谢 )
表的第二行是一些奇怪的东西,不用管它
初赛还经常要计算代码的时间复杂度。对于递归函数的一定要细心思考
(二)空间复杂度
(这部分中部分内容参考https://blog.csdn.net/shiwei408/article/details/7280296?utm_source=copy 。感谢)
32位系统下,int、long、long long、__int64所占字节数(B)
char: 1字节(8位)
int: 4字节 (32位,取值范围 -2^31 ~ 2^31-1)
unsigned int : 4字节 (32位,取值范围 0 ~ 2^32-1)
long: 4字节 (32位,取值范围 -2^31 ~ 2^31-1)
unsigned long : 4字节 (32位,取值范围 0 ~ 2^32-1)
long long : 8字节(64位,取值范围 -2^63 ~ 2^63-1)
七、位运算与逻辑运算
(一)位运算
按位与:&
按位或:|
按位异或:^
按位取反:~(对于十进制来说,取相反数再减一)
左移:<<
右移:>>
*优先级:~大于>>、<<大于&大于^大于|大于&=、^=、|=、<<=、>>=
(二)逻辑运算
"∨" 表示"或" (逻辑加法)
"∧" 表示"与". (逻辑乘法)
"┐"表示"非". (逻辑否定)
"⊕"表示"异或"
按位运算优先级大于逻辑运算
与:11为1,其它为0
或:00为0,其它为1
异或:不同为1,相同为0
八、指针
一个小东西……不过易混淆!
int a;//定义一个变量
int *p;//定义一个指针
*p=&a;//指针p取到a的地址(p是一个地址)
cout<<*p;//输出地址中的值(*p是一个值)
example:NOIP2015提高组第24题
#include <iostream>
using namespace std;
void fun(char *a, char *b) {
a = b; //a变为c2的地址。注意,指针=指针时地址中的值不变,变的只是指针
(*a)++; //将a地址(c2)中的值+1
}
int main() {
char c1, c2, *p1, *p2;
c1 = 'A';
c2 = 'a';
p1 = &c1; //p1是c1的地址
p2 = &c2; //p2是c2的地址
fun(p1, p2); //(NOIP的函数好像都叫fun……)
cout << c1 << c2 << endl;//输出为Ab
return ;
}
*九、图论(只讲一点点)
图论挺重要的,板子需要背一背
下面只是一些概念
(一)无向图
完全图:n 个点,n(n-1)/2 条边(每对顶点之间都恰连有一条边)
树:n 个点,n-1 条边(每对顶点之间都有且仅有一条路径,无环)
割点:删除该点后图不连通
割边(桥):删除该边后图不连通
点双连通:某个没有割点的无向图
边双连通:某个没有割边(桥)的无向图
双连通分量:图的极大双连通子图(分为点双连通分量和边双联通分量)
(二)有向图
强连通:在有向图G中,若u能到v,v也能到u,则称u和v是强连通的
强连通图:若有向图G的任意两个节点都强连通,则称G是一个强连通图
强连通分量:有向非强连通图的极大强连通子图,称为强连通分量
DAG:有向无环图
将一个有向图中的强连通分量都缩成一个点,则原图会形成一个DAG
拓扑排序仅适用于DAG
十、计算机奖项
(这部分中部分内容参考https://blog.csdn.net/qq_39992190/article/details/78160251?utm_source=copy。感谢)
图灵奖 (A.M. Turing Award) 由ACM于1966年设立
“计算机界的诺贝尔奖”
奖励那些对计算机事业做出重要贡献的个人
约翰•冯•诺依曼奖 由IEEE(电气和电子工程师协会)于1990年成立
表扬在计算机科学和技术上具有杰出成就的科学家
高德纳奖 (Donald E. Knuth Prize) 始于1996 1.5年颁发一次
授予为计算机科学基础做出杰出贡献的人
……
二一四七四八三六四七、一些杂乱的
(一)根据国际信息学奥林匹克竞赛(IOI)的相关决议并考虑到我国目前程序设计语言的具体情况,CCF决定:1.2020年开始,除NOIP以外的NOI系列其他赛事(包括冬令营、CTSC、APIO、NOI)将不再支持Pascal语言和C语言;2.从2022年开始,NOIP竞赛也将不再支持Pascal语言。即从NOIP2022开始,NOI系列的所有赛事将全部取消Pascal语言。在无新增程序设计语言的情况下,NOI系列赛事自NOIP2022开始将仅支持C++语言。(NOIP2017提高组第一题)
(二)IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
(三)哈夫曼编码采用贪心思想。该方法完全依据字符出现概率来构造异字头的平均长度最短的码字。哈夫曼树的叶子节点个数比非叶子节点个数多一。
(四)编译器的主要功能是将源程序翻译成指令
(五)字串是连续的,但子序列不一定是连续的
祝所有参赛选手rp++,score++,luck++!!!
本文部分图片来源于网络
若需转载,请注明https://www.cnblogs.com/llllllpppppp/p/9749930.html
NOIP2018提高组初赛知识点的更多相关文章
- NOIP2018提高组初赛准备
NOIP2017提高组初赛错题 一.单项选择题(共15 题,每题1.5 分,共计22.5 分:每题有且仅有一个正确选项) 4. 2017年10月1日是星期日,1949年10月1日是( ). A. 星期 ...
- noip2018提高组初赛试题
一.单项选择题(共 10 题,每题 2 分,共计 20 分: 每题有且仅有一个正确选项) \2. 下列属于解释执行的程序设计语言是( ). A. C B. C++ C. Pascal D. Pytho ...
- NOIP2018提高组初赛选讲
说实话,这次的初赛比上一次的要简单. 不过还有些变态的题目. 在一条长度为1 的线段上随机取两个点,则以这两个点为端点的线段的期望 长度是( ). A. 1 / 2 B. 1 / 3 C. 2 / 3 ...
- NOIP2018提高组初赛游记
AH省的,好像水军多,走的都比较早(莫非是真·大佬!!) 本人考了71,较去年退步了.(去年还考80多的来着) 题目坑.. 第一.二大题选择 第三题年份,看了试卷标题,第二十二届,算出来后没有这个选项 ...
- 几道noip2018提高组初赛的题
以下做法来均自llj @Nicodafagood 一.单项选择题 7. 在一条长度为 1 的线段上随机取两个点,则以这两个点为端点的线段的期望 长度是( ).A. 1 / 2B. 1 / 3C. 2 ...
- NOIp2018 提高组初赛试题参考答案
- NOIP提高组初赛难题总结
NOIP提高组初赛难题总结 注:笔者开始写本文章时noip初赛新题型还未公布,故会含有一些比较老的内容,敬请谅解. 约定: 若无特殊说明,本文中未知数均为整数 [表达式] 表示:在表达式成立时它的值为 ...
- [NOIp2018提高组]旅行
[NOIp2018提高组]旅行: 题目大意: 一个\(n(n\le5000)\)个点,\(m(m\le n)\)条边的连通图.可以从任意一个点出发,前往任意一个相邻的未访问的结点,或沿着第一次来这个点 ...
- [NOIp2018提高组]赛道修建
[NOIp2018提高组]赛道修建 题目大意: 给你一棵\(n(n\le5\times10^4)\)个结点的树,从中找出\(m\)个没有公共边的路径,使得第\(m\)长的路径最长.问第\(m\)长的路 ...
随机推荐
- Windows IIS 服务器配置HTTPS启用TLS协议。
好消息, 程序员专用早餐机.和掌柜说 ideaam,可以节省20元. 点击链接 或復·制这段描述¥k3MbbVKccMU¥后到淘♂寳♀ Windows IIS 服务器配置HTTPS启用TLS协议. ...
- 【原创 Hadoop&Spark 动手实践 13】Spark综合案例:简易电影推荐系统
[原创 Hadoop&Spark 动手实践 13]Spark综合案例:简易电影推荐系统
- iOS UITextView 设置 NSLinkAttributeName 属性,点击链接跳转
@interface ViewController ()<UITextViewDelegate> - (void)viewDidLoad{ [super viewDidLoad]; ...
- ExtJS6 根据Value设置单元格颜色
renderer : function(value, meta) { if(parseInt(value) > 0) { meta.style = ""; } else { ...
- windows 端口被占用,并杀死进程的方法
netstat -ano | findstr 8081 查询端口 被什么进程占用 tasklist | findstr 2184 根据进程号 查询任务名称 taskkill /f /t /im jav ...
- centos7下使用docker安装nginx
需要环境docker,此处不做介绍. 1. docker拉取官方nginx镜像 docker pull nginx 2. 等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITORY 为 ng ...
- 浅从System.Web.Http.Owin的HttpMessageHandlerAdapter看适配器模式
本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 适配器模式(Adapter) 可用来在现有接口和不兼容的类之间进行适配.有助于 ...
- 【静默】在RHEL 6.5上静默安装Oracle 18c
[静默]在RHEL 6.5上静默安装Oracle 18c Oracle 18c.18c其实就是12.2.0.2,19c就是12.2.0.3.db_home.zip 安装包大概4.25G,解压后有8.9 ...
- 蜕变成蝶~Linux设备驱动中的阻塞和非阻塞I/O
今天意外收到一个消息,真是惊呆我了,博客轩给我发了信息,说是俺的博客文章有特色可以出本书,,这简直让我受宠若惊,俺只是个大三的技术宅,写的博客也是自己所学的一些见解和在网上看到我一些博文以及帖子里综合 ...
- BarTender怎样同时打印自动日期和流水号?
大多数条形码中都会含有日期和数量信息,而且大部分都是两者兼具.有些使用BarTender软件的小伙伴,不知道怎么同时打印自动日期和流水号,即条形码中兼有自动日期和序列号,且它们都能根据打印的变化而变化 ...