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 ...
随机推荐
- rust学习笔记(1)
参考 rust圣经 参考 通过例子学习rust cargo 是rust的包管理器+编译工具 创建新项目 使用下述指令创建一个新的项目 cargo new rust_learn 执行 使用 cargo ...
- 理解Python中的元类(metaclass)
类也是对象 在理解元类之前,你需要先掌握Python中的类.Python中类的概念借鉴于Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在Pytho ...
- go ERROR invalid character '<' looking for beginning of value
报错 go ERROR invalid character '<' looking for beginning of value 请检查服务器响应数据是否正确,能够正确被 json 解析 一般碰 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 30 期(2025年3.10-3.16)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- 使用Shader画常见的数学函数
使用Shader画常见的数学函数 本篇博文的灵感来自于Shader Books这一小节:https://thebookofshaders.com/05/?lan=ch 代码运行网站:http://ed ...
- ANSYS 启动窗口过大问题解决
方法总结(省流版):选择兼容性下更改高 DPI 设置 => 勾选高DPI 缩放代替 ,且其下对应应用程序选项 1.环境 系统环境:Windows 11 设备情况:分辨率 1920×1080:缩放 ...
- 让 LLM 来评判 | 技巧与提示
这是 让 LLM 来评判 系列文章的第六篇,敬请关注系列文章: 基础概念 选择 LLM 评估模型 设计你自己的评估 prompt 评估你的评估结果 奖励模型相关内容 技巧与提示 LLM 评估模型已知偏 ...
- el-table-column动态判断显示性别男女
<el-table-column label="性别" width="60" align="center" prop="ge ...
- 记一次 .NET某旅行社酒店管理系统 卡死分析
一:背景 1. 讲故事 年初有位朋友找到我,说他们的管理系统不响应了,让我帮忙看下到底咋回事? 手上也有dump,那就来分析吧. 二:为什么没有响应 1. 线程池队列有积压吗? 朋友的系统是一个web ...
- 从源码看 QT 的事件系统及自定义事件
事件是程序内部或外部触发的动作或状态变化的信号.在 Qt 中,所有事件都是 QEvent 派生类的对象,事件由 QObject 派生类的对象接收和处理.每一个事件都有对应的 QEvent 派生类,当事 ...