CSP-J/S第一轮初赛 ~持续更新~
CSP-J/S初赛
2022更新的初赛知识汇总
基础算法
链表
插入删除数据,操作数据O(1),遍历是O(n),可以进行动态调整。
指针指向的是上下节点,链表储存 数据 下一个节点 上一个节点。
动态调整:插入一定量的节点,进行调整。
插入节点:考虑信息覆盖(这些信息后面是否会再被用到)。
寻找和读取比较慢一些。
队列、栈
栈Stack,队列queue
可以使用两个栈来模拟队列,队列也可以模拟栈。
递推和递归
递归:再函数定义中使用函数本身,可以通过堆、栈实现。 如果因为执行次数过多导致暴空间是栈。
基本图论
度:度数、入度、出度。
连通图:
不一定是直接到达。
无向连通图至少有N-1个节点。,有向图强连通至少有n条边。
只要有有向图和无向图就是混合图。
邻接矩阵:稀疏图效率低。
邻接表:记录每一个点延伸出去的边
树
并查集用树来实现的
有根树性质
- 边数=点数-1
- 有环的大多数不一定是树
二叉树
完整二叉树:每个节点度数为0或2。
完全二叉树:
满二叉树/完美二叉树:所有节点的度为2.
序列反推:已知中序遍历,和另一个任意便利方式,可以得到一棵树。
哈夫曼树
哈夫曼编码可以用来节省空间。
二叉搜索树
深搜与广搜
深搜:栈
广搜:队列
排序
逆波兰表达式
进制转换与位运算
x进制转10进制
对于整数部分
对于 n 位 X 进制整数,考虑我们刚刚所讲的满 X 进 1 的定义,我们可以从其 X 进制中求出其十进制值。令其从左往右第 i 位数码为
(a1a2...an)x=a1Xn-1 + a2Xn-2+...+anX0
总结就是从低位到高位,依次累计计算答案就行了。
对于小数部分

十进制转 X 进制
整数部分
十进制整数转 X 进制,采用进制的定义即可,使用短除法。具体地,每次将当前数除以 X 的余数记下,然后将该数除以 X 后下取整,重复操作直到当前数变为 0。将记下的所有余数反着排列,就可以得到转换后的 X 进制数。例如将十进制整数 13 转为二进制

小数部分
考虑十进制小数转 X 进制,整数部分与小数部分可以分别计算,于是整数部分按照刚刚的方法计算即可。考虑数码从左到右位数变小、X 的幂次也变小,可以发现小数部分将除法改为乘法即可。具体地,提出小数部分 p,每次将 p 乘上 X,然后记下并减去整数部分,重复计算直到 p 为 0。记下的数码顺序排列就是小数部分。例如对于十进制小数 13.375,整数部分化为 1101,小数 0.375 提出计算。0.375 × 2 = 0.75, 0.75 × 2 = 1.5, 0.5 × 2 = 1记下的数字分别为:0,1,1,可得 0.375 化为二进制为 0.011。于是 13.375 化为二进制即为 1101.011
位运算
简介
程序中的所有数在计算机内存中都是以二进制的形式储存的,位
运算就是直接对整数在内存中的二进制位进行操作。
C++ 语言提供了六种位运算符来进行位运算操作:
- 按位与 &
- 按位或 |
- 按位异或 ^
- 按位非 ~
- 左移 <<
- 右移 >>
具体功能
按位与 &
按位与:C++ 中写作 &,数学公式中写作 and。将参与运算的两操作数各对应的二进制位进行与操作,只有对应的两个二进位均为 1 时,结果的对应二进制位才为 1,否则为 0。
按位与的应用:
• 通常用来将某变量中的某些位变成 0 且同时保留其他位不变。
例如 n&=0xffffff00 可以将 int 型后 8 位清 0。
• 用来获取某变量中的某一位。
例如判断 n 的从低到高第 3 位是否是 1 可以用 n&4 来判断。
代码中 if(x&1) 等价于 if(x%2==1)。
注意: && 是对 bool 进行的逻辑与,5&&7=true&&true=1
按位或 |
将参与运算的两操作数各对应的二进制位进行或操作,只有对应的两个二进位均为 0 时,结果的对应二进制位才为 0,否则为 1。
按位或的应用:
• 通常用 来将某变量中的某些位变成 1 且同时保留其他位不变。
例如 n|=0x0000ffff 可以将 int 型后 16 位变成 1 。
注意:|| 是对 bool 进行的逻辑或,5||0=true||false=1。
按位异或 ^
将参与运算的两操作数各对应的二进制位进行异或操作,只有对应的两个二进位不同时,结果的对应二进制位才为 1,否则为 0。
异或具有可差分性,即 a^b=c 可以推出 ca=b,cb=a。
代码中 if(x^1) 等价于 if(x!=1)
按位非(取反) ~
是单目运算符。其功能是将操作数中的二进制位 0 变成 1,1 变成 0。
通过编码的知识,我们可以知道 x=-(x+1)。if(x) 和 if(x!=-1) 等价
左移运算符<<
a<<b 得到的值是将 a 的二进制位全部左移 b 位后得到的值,左移时高位丢弃,低位补 0,a的值不因运算而改变。实际上左移一位就是 × 2,于是左移 n 位就是 × 2,左移操作比乘法操作快得多。
右移运算符 >>
a>>b 得到的值是将 a 的二进制位全部右移 b 位后得到的值,右移时移出最右边的位丢弃,高位补 0,a 的值不因运算而改变。实际上右移一位就是 ÷ 2 后向下取整,右移 n 位就是 ÷ 2 后向下取整。
例如:7>>2=3>>1=1。
有符号数的右移是算术右移,右移后符号位会赋为原符号位。所以对于负数的右移,实际上是 10xxx 右移一位变为 110xxx
运算符的优先级

本质上就是算术运算优先,其次再是位运算,最后是逻辑运算。注意位运算非的优先级很高。
基础知识


CSP-J/S第一轮初赛 ~持续更新~的更多相关文章
- Python_入门第一篇【持续更新...】
1.准备 准备电脑 和 分区 1.准备配置稍高的电脑(后后期需要装虚拟机),分辨率1920*1080 2.分区: C→系统 D→Project E→软件安装盘 F→其他 准备编辑器 1.Sublime ...
- 史上最全的CSP-J/S 第一轮知识点
CSP-J/S 第一轮知识点选讲 \(NOIP\)(全国青少年信息学奥林匹克竞赛)于2019年取消.取而代之的是由\(CCF\)推出的非专业级软件能力认证,也就是现在的\(CSP-J/S\).作为一名 ...
- [转载]CSP-J/S 第一轮知识点选讲
CSP-J/S 第一轮知识点选讲 转载自这里 感谢原博主的大力整理! 信息学史及基本知识 一.信息学及计算机史 计算机的顶级奖项:图灵奖.冯·诺依曼奖 图灵奖:由ACM(美国计算机协会)设立于1966 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- CSP J/S 初赛总结
CSP J/S 初赛总结 2021/9/19 19:29 用官方答案估计 J 涂卡的时候唯一的一支 2B 铅笔坏了,只能用笔芯一个个涂 选择 \(-6\ pts\) 判断 \(-3\ pts\) 回答 ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js
BAT 前端开发面经 —— 吐血总结 目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...
- LeetCode python实现题解(持续更新)
目录 LeetCode Python实现算法简介 0001 两数之和 0002 两数相加 0003 无重复字符的最长子串 0004 寻找两个有序数组的中位数 0005 最长回文子串 0006 Z字型变 ...
- ( 译、持续更新 ) JavaScript 上分小技巧(四)
后续如有内容,本篇将会照常更新并排满15个知识点,以下是其他几篇译文的地址: 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第二篇地址:( 译.持续更新 ) JavaScr ...
- ( 译、持续更新 ) JavaScript 上分小技巧(三)
最近家里杂事较多,自学时间实在少的可怜,所以都在空闲时间看看老外写的内容,学习之外顺便翻译分享~等学习的时间充足些再写写自己的一些学习内容和知识点分析(最近有在接触的:复习(C#,SQL).(学习)T ...
随机推荐
- Laravel11 从0开发 Swoole-Reverb 扩展包(一) - 扩展包开发
前言 大家好呀,我是yangyang.好久没更新了,最近新项目在使用laravel11(截止目前发文,laravel12也发布了)做开发,自己也是利用有些空闲时间做些除开业务以外的深入学习,因此也就萌 ...
- go 限流器 rate
前言 Golang 官方提供的扩展库里就自带了限流算法的实现,即 golang.org/x/time/rate.该限流器也是基于 Token Bucket(令牌桶) 实现的. 限流器的内部结构 tim ...
- php-fpm 启动后没有监听端口9000
netstat -tpln未发现监听9000端口.查看/var/log/php7-fpm.log一切正常. 随后查看PHP配置文件:/usr/local/php/etc/php-fpm.conf (源 ...
- RabbitMQ 延迟任务(限时订单) 思路
一.场景 我们经常会碰见,一个需求就是,发送一条指令(消息),延迟一段时间执行,比如说常见的淘宝当下了一个订单后,订单支付时间为半个小时,如果半个小时没有支付,则关闭该订单.当然实现的方式有几种,今天 ...
- MQ 如何保证数据一致性?
前言 上个月,我们有个电商系统出了个灵异事件:用户支付成功了,但订单状态死活不改成"已发货". 折腾了半天才定位到问题:订单服务的MQ消息,像人间蒸发一样消失了. 这个Bug让我明 ...
- 【Docker】常用服务镜像安装
Docker常用安装 总体步骤 搜索镜像:docker search xxx 拉取镜像:docker pull xxx 查看镜像:docker images 启动镜像:docker run xxx 停 ...
- 【Ubuntu】ARM交叉编译开发环境解决“没有那个文件或目录”问题
[Ubuntu]ARM交叉编译开发环境解决"没有那个文件或目录"问题 零.起因 最近在使用Ubuntu虚拟机编译ARM程序,解压ARM的GCC后想要启动,报"没有那个文件 ...
- 【Linux】远程连接Linux虚拟机(MobaXterm)
[Linux]远程连接Linux虚拟机(MobaXterm) 零.原因 有时候我们在虚拟机中操作Linux不太方便,比如不能复制粘贴,不能传文件等等,我们在主机上使用远程连接软件远程连接Linux虚拟 ...
- Spring AI与DeepSeek实战三:打造企业知识库
一.概述 企业应用集成大语言模型(LLM)落地的两大痛点: 知识局限性:LLM依赖静态训练数据,无法覆盖实时更新或垂直领域的知识: 幻觉:当LLM遇到训练数据外的提问时,可能生成看似合理但错误的内容. ...
- study Python3【2】导入模块
import 与 from...import 在 python 用 import 或者 from...import 来导入相应的模块. 将整个模块(somemodule)导入,格式为: import ...