史上最全的CSP-J/S 第一轮知识点
CSP-J/S 第一轮知识点选讲
\(NOIP\)(全国青少年信息学奥林匹克竞赛)于2019年取消。取而代之的是由\(CCF\)推出的非专业级软件能力认证,也就是现在的\(CSP-J/S\)。作为一名于2019年1月入\(OI\)的蒟蒻\(OIer\),没能参加\(NOIP\)是我一生的遗憾。但在遗憾之余,我不得不备战\(CSP\)的认证。而\(CSP\)非专业级认证的第一轮(也就是\(NOIP\)初赛)常常使某些大神\(OIer\)(就是对基础知识不太了解)无缘复赛...所以今天来盘一下初赛知识点,顺带着自己也学习一下......
信息学史及基本知识
一、信息学及计算机史
计算机的顶级奖项:图灵奖
对信息科学做出突出贡献的大神:图灵(所以才有个奖),冯 · 诺伊曼
中国获图灵奖的大神:姚期智(清华就有姚班,就是以他的名字命名的)
世界第一台电子计算机:埃尼阿克(\(ENIAC\)),于1946年2月14日
(够虐狗的)在美国宾夕法尼亚大学诞生。又被叫做电子管计算机。
二、关于编程
编程语言:分两类:面向对象和面向过程。
高级语言和低级语言的区别:高级语言需要编译运行,常数较大,运行速度慢。而低级语言常数极小,运行速度快。此外,高级语言更容易移植。
常见低级语言:汇编
面向对象的高级语言:C++,Java,EIFFEL,Simula 67等。
面向过程的高级语言:C,Fortran语言。
三、关于计算机
先上张大图:
重要设备:
硬件组成:
控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
输入设备(Input system):输入设备是计算机的重要组成部分,输入设备与输出设备合称为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
输出设备(Output system):输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。微机常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。
CPU及存储:
CPU(中央处理器)=运算器+控制器+寄存器
存储器=内存储器+外存储器
BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
随机存储器RAM的“随机”指“随时访问”
所以,我们记下来以下知识点:
断电后可以保存数据:硬盘,ROM
断电后不可以保存数据:显存(显卡内存),RAM,CPU
- 计算机各存储单位及进位关系:
计算机的存储单位有以下几种:
\(TB/GB/MB/KB/B\)
他们之间的进位关系为1024(这应该是常识,没打过比赛还没玩过手机么?)
特殊地,\(1B=8(bit)\),这里的\(bit\)是二进制下的一位内存。
进制及进制转化
十进制转任意进制
将十进制转换成\(N\)进制,只需把十进制数每次除\(N\)求余数,然后把余数逆序写出来。
看不懂就看图:
这是二进制的图,其他进制就类比推一下就可以了。如果这个看不懂的话就不要参加初赛了,50块钱买点啥不好...
任意进制转十进制
简单说就是:按位转,第\(i\)位的数字乘以要转换的进制的\(n-1\)次幂即可。
还是上图:
任意进制互相转化
这里考虑用十进制做中转,先把\(A\)进制转十进制,再把十进制转\(B\)进制。
关于小数的进制转换
十进制转任意进制的小数不进行除法运算,而进行乘法运算后取整,取整后从前向后排列。
任意进制转十进制的小数只需要乘上负指数,最后算出来即可。
各进制的字母表达
\(H(Hexadecimal)\)——16进制
\(D(Decimal)\)——10进制
\(O(Octonary)\)——8进制
\(B(Binary)\)——2进制
二进制的相关知识
二进制是计算机进行计算所使用的工具,自然也是非常常考的要点。二进制的相关知识有许多,甚至算法中的位运算也是二进制的相关内容,但为了过第一轮初赛,我们只介绍一些理论知识。关于位运算的相关知识请有兴趣的同学自己学习。
- 1、原码
顾名思义,原码就是十进制数直接转换成二进制之后直接形成的二进制编码。
- 2、补码
正数的补码是本身,负数的补码是其反码加一。
- 3、反码
顾名思义:正数的反码是本身,负数的反码是其除符号位之外的所有位按位取反的结果。
逻辑运算
逻辑运算
逻辑运算一共有三种,每种都有两种写法:
逻辑非:!或 ┐
逻辑与:&& 或 ∧
逻辑或:|| 或 ∨
逻辑运算的优先级
非\(>\)与\(>\)或
位运算+逻辑运算的优先级
逻辑非(!,┐)=按位反(~)>位移运算(<<,>>)>不等号(>=,<=)>等号(==,!=)>按位与(&)>按位异或(^)>按位或(|)>逻辑与(&&,∧)>逻辑或(||,∨)
图论理论知识
基本概念
- 完全图:任意两点都有边相连,我们很容易推出来,一张完全图的边数为(\(n\)为节点个数)
\[ \frac{n\times (n-1)}{2} \]
连通图:顾名思义,连通图就是连通的图,即任意两点都能直接或间接到达,这就区别于完全图必须直接用边到达的定义。
树:emm...直观来讲,就是一张长得像树的图。定义是任意两点之间的简单路径有且只有一条。树是一棵连通且无环的图。它的边数是\(n-1\)。
二叉树的遍历
先序遍历:遍历方式如下:根—左儿子—右儿子
中序遍历:遍历方式如下:左儿子—根—右儿子
后序遍历:遍历方式如下:左儿子—右儿子—根
我们用一张图来理解一下这几种遍历方式。
这张图的先序遍历:1245367
中序遍历:4251637
后序遍历:4526731
一个推论:
先序遍历+中序遍历=一棵确定的二叉树
后序遍历+中序遍历=一棵确定的二叉树
先序遍历+后序遍历=啥也不是
特殊二叉树及其性质
- 完全二叉树:只有最后一层不是满的,且最后一层的所有节点均集中在左侧。
图例如下:
- 满二叉树:节点个数已满。
图例如下:
- 特殊二叉树的性质:
1、对于一棵满二叉树来讲,它的叶子节点为\(n\),则节点总数为\(2\times n-1\)。此结论可逆。
2、对于一棵满二叉树来讲,它的层数(深度)为\(k\),则它的节点总数为\(2^k-1\)。此结论可逆。
简单数据结构基本理论
1、栈
想象一个桶,你从上面往里扔砖,然后你想把某一块砖拿出来,你需要先拿出来你后扔进去的砖。这就是栈。栈的基本原则是:后进先出
来一发图示?
2、队列
想象你在排队买票,这个队伍中的人都非常有素质,都自觉排队而且不会提前离开队伍。这样就只能从队首买完票再离开,从队尾进入队伍。队列的基本原则是:先进先出。
再来一发图示:
3、链表
链表分两种:单向链表和双向链表。关于链表,我有一篇专门讲解的博客。有兴趣的读者请戳:
链表详解
时空复杂度的计算
时间复杂度:渐进时间复杂度用符号\(O\) 表示。一个程序的语句执行次数可以用一个代数式表示,那么我们取这个代数式的最高次项且忽略此项系数作为时间复杂度。如果一个程序的语句执行次数为 \(2n^3+3n^2+n+7\),那么这个程序的渐进时间复杂度为\(O(n^3)\)。
计算非递归程序的时间复杂度:简单粗暴,数循环。
常数:常数即为我们忽略掉的\(O\)中最高次项的系数与低次项所带来的时间消耗。
空间复杂度:类比时间复杂度。看开空间开了多大。
计算空间占用量:根据我们以上说过的计算机存储单位的知识:一个\(int\)占用的内存是\(4B\),所以我们把开的\(int\)乘上4,再除以1024就是\(KB\),同理,再除\(1024\)就是\(MB\)。
公式:\(n\)为元素个数,\(M\)为最终答案(以\(MB\)为单位)
\[ M=\frac{4n}{1024\times 1024} \]
PS:一般来讲,比赛中所给的\(256MB\)内存可以开\(6\times 10^7\)个\(int\)类型的变量。另外,大数组必须开全局变量。如果扔在主函数里极容易爆栈。
数学、逻辑学及运筹学知识
- 排列组合:排列组合是每年必考知识点。但是这是一个比较大的课题。不仅是高二数学选修重点,也是数学编程的一个重要分支。关于排列组合及相关知识,我有一个专门讲解排列组合的博客,欢迎读者翻阅:
浅谈排列组合
- 幻方
题目类型整理
题型 | 知识点类型 | 题目数量 |
---|---|---|
单选 | 信息学史&基本知识 | 8-10 |
单选 | C++语法知识点 | 2-3 |
单选 | 数据结构&算法 | 3-4 |
单选 | 数学&逻辑学&运筹学 | 3-4 |
单选 | 比赛相关知识 | 1-2 |
问题求解 | 数学 | 1 |
问题求解 | 数据结构 | 1 |
模拟程序运行 | C++语法&算法 | 4 |
完善程序 | C++语法&算法 | 2 |
转载于:https://www.cnblogs.com/fusiwei/p/11559283.html
史上最全的CSP-J/S 第一轮知识点相关推荐
- 《史上最全、最强Java学习路线知识点整理!!全是干货!!》
自己平时学习整理的笔记,分享给各位,希望可以帮助各位,文章很长,点击收藏慢慢看吧!以后会分别对各个知识点进行透彻分析,敬请期待! Java基础 集合 HashMap 1.7 数组 + 链表.扩容时头插 ...
- VS Code:史上最全的VS Code快捷键+分门别类(中英文对照版)
VS Code:史上最全的VS Code快捷键+分门别类(中英文对照版) 目录 基础编辑 Basic editing 导航 Navigation 搜索和替换 Search and replace 多光 ...
- java 3 9 2 6数字排序_GitHub - JourWon/sort-algorithm: 史上最全经典排序算法总结(Java实现)...
史上最全经典排序算法总结(Java实现) 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗, ...
- 史上最全的Linux常用——目录和文件管理命令——收藏这一篇就够了!(超全,超详细)
史上最全的Linux常用--目录和文件管理命令--收藏这一篇就够了!(超全,超详细) Linux目录结构 命令 查看文件内容:-cat 查看文件内容:-more 查看文件内容:-less 查看文件内容 ...
- c++全局监听ctrl s_号称史上最全!134个CAD快捷键强烈来袭,难道你只知道Ctrl+C?...
想要提高CAD绘图速率你就必须熟记CAD快捷键,小编盘点了134个CAD个快捷键,号称史上最全,一起来看看吧. 一.常用字母键 CO:复制 MI:镜像 AR:阵列 O:偏移 RO:旋转 M:移动 E: ...
- idea mac 替换_史上最全的IntelliJ IDEA For Mac快捷键!快来收藏吧!
原标题:史上最全的IntelliJ IDEA For Mac快捷键!快来收藏吧! IntelliJ IDEA 2020 for Mac适用于JVM的功能强大且符合人体工程学的IDA! IDEA对新手来 ...
- 转载 --史上最全数学符号、公式的英文读法,干货满满!
在学习数学符号读法时,搜到这篇文章,非常全面,也很风趣,忍不住转载过来,若有不妥, 请联系我. [收藏]史上最全数学符号.公式的英文读法,干货满满! 2018-01-04 11:00 英语 说起英语和 ...
- 时间轮 (史上最全)
缓存之王 Caffeine 中,涉及到100w级.1000W级.甚至亿级元素的过期问题,如何进行高性能的定时调度,是一个难题. 注: 本文从 对 海量调度任务场景中, 高性能的时间轮算法, 做了一个 ...
- redis 集群 实操 (史上最全、5w字长文)
文章很长,建议收藏起来慢慢读! 总目录 博客园版 为大家准备了更多的好文章!!!! 推荐:尼恩Java面试宝典(持续更新 + 史上最全 + 面试必备)具体详情,请点击此链接 尼恩Java面试宝典,34 ...
- redis cluster 集群 HA 原理和实操(史上最全、面试必备)
文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 经典图书:<Java高并发核心编程(卷1)> 面试必备 ...
最新文章
- Java 判断list中是否包含某个元素
- python -- plt图表
- 1008 Elevator
- vue——props的两种常用方法
- Java面向对象知识概括归纳与总结
- 第二期安全狗讲坛3月11日开始
- 最终篇!AAAI 2022值得读的NLP论文盘点
- 作为一名程序员,谁没跳过槽,“6”招让你“空降”大厂
- Mongodb 与 Redis 调教
- linux之用openssl命令Base64编码解码、md5/sha1摘要、AES/DES3加密解密
- Linux+Docker+腾讯云/阿里云服务器 安装MySQL相关命令整理
- java spring 配置词典_java之spring mvc之拦截器
- 链接随机html,通过Javascript/HTML生成随机链接
- C语言极坐标转直角坐标,C语言实现直角坐标转换为极坐标的方法
- plsa java代码_LDA主题聚类学习小结
- Cocos2dx游戏源码合集
- CSS:transform
- turbo c语言编程环境,turbo c(编程软件)
- java中常量池存的是什么_Java中常量池是什么?Java常量池的介绍
- JQuery实现防抖节流
热门文章
- Linux在安装Python时:zipimport.ZipImportError: can‘t decompress data; zlib not available
- duxing201606很快乐
- JAVA 16位ID生成工具类含16位不重复的随机数数字+大小写
- SpringDataJpa (二)-动态查询多表操作
- webworker应用场景_JavaScript 工作原理之七-Web Workers 分类及 5 个使用场景
- 雅思听力常见人名及地名(常考,必备)
- 新手入门linux必看
- java实现将将时间段分成8段,判断当前时间在哪一段时间里?
- 手机短信接收验证码的实现原理
- 千万别在微社区太投入