CSP-J/S初赛

2022更新的初赛知识汇总

基础算法

链表

插入删除数据,操作数据O(1),遍历是O(n),可以进行动态调整。

指针指向的是上下节点,链表储存 数据 下一个节点 上一个节点。

动态调整:插入一定量的节点,进行调整。

插入节点:考虑信息覆盖(这些信息后面是否会再被用到)。

寻找和读取比较慢一些。

队列、栈

栈Stack,队列queue

可以使用两个栈来模拟队列,队列也可以模拟栈。

递推和递归

递归:再函数定义中使用函数本身,可以通过堆、栈实现。 如果因为执行次数过多导致暴空间是栈。

基本图论

度:度数、入度、出度。

连通图:

不一定是直接到达。

无向连通图至少有N-1个节点。,有向图强连通至少有n条边。

只要有有向图和无向图就是混合图。

邻接矩阵:稀疏图效率低。

邻接表:记录每一个点延伸出去的边

并查集用树来实现的

有根树性质

  1. 边数=点数-1
  2. 有环的大多数不一定是树

二叉树

完整二叉树:每个节点度数为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++ 语言提供了六种位运算符来进行位运算操作:

  1. 按位与 &
  2. 按位或 |
  3. 按位异或 ^
  4. 按位非 ~
  5. 左移 <<
  6. 右移 >>

具体功能

按位与 &

按位与: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第一轮初赛 ~持续更新~的更多相关文章

  1. Python_入门第一篇【持续更新...】

    1.准备 准备电脑 和 分区 1.准备配置稍高的电脑(后后期需要装虚拟机),分辨率1920*1080 2.分区: C→系统 D→Project E→软件安装盘 F→其他 准备编辑器 1.Sublime ...

  2. 史上最全的CSP-J/S 第一轮知识点

    CSP-J/S 第一轮知识点选讲 \(NOIP\)(全国青少年信息学奥林匹克竞赛)于2019年取消.取而代之的是由\(CCF\)推出的非专业级软件能力认证,也就是现在的\(CSP-J/S\).作为一名 ...

  3. [转载]CSP-J/S 第一轮知识点选讲

    CSP-J/S 第一轮知识点选讲 转载自这里 感谢原博主的大力整理! 信息学史及基本知识 一.信息学及计算机史 计算机的顶级奖项:图灵奖.冯·诺依曼奖 图灵奖:由ACM(美国计算机协会)设立于1966 ...

  4. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  5. CSP J/S 初赛总结

    CSP J/S 初赛总结 2021/9/19 19:29 用官方答案估计 J 涂卡的时候唯一的一支 2B 铅笔坏了,只能用笔芯一个个涂 选择 \(-6\ pts\) 判断 \(-3\ pts\) 回答 ...

  6. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  7. BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js

    BAT 前端开发面经 —— 吐血总结   目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...

  8. LeetCode python实现题解(持续更新)

    目录 LeetCode Python实现算法简介 0001 两数之和 0002 两数相加 0003 无重复字符的最长子串 0004 寻找两个有序数组的中位数 0005 最长回文子串 0006 Z字型变 ...

  9. ( 译、持续更新 ) JavaScript 上分小技巧(四)

    后续如有内容,本篇将会照常更新并排满15个知识点,以下是其他几篇译文的地址: 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第二篇地址:( 译.持续更新 ) JavaScr ...

  10. ( 译、持续更新 ) JavaScript 上分小技巧(三)

    最近家里杂事较多,自学时间实在少的可怜,所以都在空闲时间看看老外写的内容,学习之外顺便翻译分享~等学习的时间充足些再写写自己的一些学习内容和知识点分析(最近有在接触的:复习(C#,SQL).(学习)T ...

随机推荐

  1. rust学习笔记(1)

    参考 rust圣经 参考 通过例子学习rust cargo 是rust的包管理器+编译工具 创建新项目 使用下述指令创建一个新的项目 cargo new rust_learn 执行 使用 cargo ...

  2. 理解Python中的元类(metaclass)

    类也是对象 在理解元类之前,你需要先掌握Python中的类.Python中类的概念借鉴于Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在Pytho ...

  3. go ERROR invalid character '<' looking for beginning of value

    报错 go ERROR invalid character '<' looking for beginning of value 请检查服务器响应数据是否正确,能够正确被 json 解析 一般碰 ...

  4. C#/.NET/.NET Core技术前沿周刊 | 第 30 期(2025年3.10-3.16)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  5. 使用Shader画常见的数学函数

    使用Shader画常见的数学函数 本篇博文的灵感来自于Shader Books这一小节:https://thebookofshaders.com/05/?lan=ch 代码运行网站:http://ed ...

  6. ANSYS 启动窗口过大问题解决

    方法总结(省流版):选择兼容性下更改高 DPI 设置 => 勾选高DPI 缩放代替 ,且其下对应应用程序选项 1.环境 系统环境:Windows 11 设备情况:分辨率 1920×1080:缩放 ...

  7. 让 LLM 来评判 | 技巧与提示

    这是 让 LLM 来评判 系列文章的第六篇,敬请关注系列文章: 基础概念 选择 LLM 评估模型 设计你自己的评估 prompt 评估你的评估结果 奖励模型相关内容 技巧与提示 LLM 评估模型已知偏 ...

  8. el-table-column动态判断显示性别男女

    <el-table-column label="性别" width="60" align="center" prop="ge ...

  9. 记一次 .NET某旅行社酒店管理系统 卡死分析

    一:背景 1. 讲故事 年初有位朋友找到我,说他们的管理系统不响应了,让我帮忙看下到底咋回事? 手上也有dump,那就来分析吧. 二:为什么没有响应 1. 线程池队列有积压吗? 朋友的系统是一个web ...

  10. 从源码看 QT 的事件系统及自定义事件

    事件是程序内部或外部触发的动作或状态变化的信号.在 Qt 中,所有事件都是 QEvent 派生类的对象,事件由 QObject 派生类的对象接收和处理.每一个事件都有对应的 QEvent 派生类,当事 ...