CSP 初赛要点复习
位运算
逻辑与、按位与之类的东西是不同的!“逻辑”的是判断两个数都不为 \(0\),“按位”的是判断两个数的每一个二进制位与的结果,是不同的。其他运算也类似。
运算符优先级如图所示:
注意,~ 和 ! 是同级的。
加法位运算表示:a+b=(a^b)+((a&b)<<1)
。
与的符号开口向下,和交集的符号 \(∩\) 的方向相同。或的开口向上,和并集的符号 \(∪\) 的方向相同。非是一个横线加一个直角:\(\lnot\)。
逻辑运算符优先级:非、与、或。(没有异或)
编码
原码:第一位符号位,其他位正常表示数字。正数第一位 \(0\),负数第一位为 \(0\),\(0\) 的原码有两种(即第一位为 \(1\) 或 \(0\) 都可以)。比如:\(10\to00001010,-10\to 10001010\)。
反码:正数时就是原码,负数时将其原码的符号位不变,其他位全部取反。\(0\) 的反码有两种,全 \(0\) 和全 \(1\)。比如:\(2\to 00000010,-2 \to 11111101\)。
补码:正数的补码就是其原码,负数的补码等于其反码加 \(1\)。\(0\) 的补码只有 \(1\) 个:全 \(0\)。比如:\(1 \to 00000001,-1 \to 11111111\)。
浮点数编码:阶码和尾数。阶码:小数点的位置,尾数:小数的有效位数。
表示范围:
- 原码、反码:\([-2^{31}+1,2^{31}-1]\),因为 \(0\) 占了两个编码。
- 补码:\([-2^{31},2^{31}-1]\),因为 \(0\) 多的一个编码给了负数。
无符号整型的范围是 \([0,2^{32}-1]\)。
注意:最高位产生进位不一定意味着运算溢出。
进制
十进制转 \(K\) 进制:短除法,记录下每次短除的余数。结果最终要倒过来。
十进制小数部分转 \(K\) 进制小数部分处理方法:每次将小数部分乘 \(K\),记录下每次整数部分是啥,然后再砍掉整数部分继续进行,直到小数部分为 \(0\)。结果最终不用倒过来。如果是循环小数,就算到需要的精度就停下。
\(2^i\) 进制之间可以通过每 \(i\) 位合并一次的方式快速转化。
十六进制 H,十进制 D,八进制 O,二进制 B。
代码中,十六进制 0x...
,十进制 ...
,八进制 0...
,二进制 0b...
。
未知进制的做题技巧,设 \(x\) 进制,然后用 \(k \times x^i\) 表示各位数。
计算机软件系统
自求多福吧。
常用文件扩展名:
- 文本:
.pdf , .doc , .txt , .md , .docx
。 - 图片:
.jpg , .png , .gif
。 - 音频:
.wav , .mp3 , .ogg
。 - 视频:
.avi , .wmv , .mp4
。 - 程序:
.exe
。
注意:Linux 下程序默认没有扩展名!!!
代表性系统软件分类:
- 操作系统,很大程度上决定了计算机系统的性能。
- 语言处理程序
- 数据库管理系统
常用操作系统:
- Windows
- Windows XP
- MacOs
- Linux
- Unix
- NOI Linux
- DOS
- iOS
- Android
- Solaris
操作系统作用:控制和管理系统资源。
P2P:对等网络。
QQ、MSN、微信:即时通信软件。
BIOS:Basic Input Output System,基本输入输出系统。
计算机语言
低级语言:依赖硬件,可读性差,可移植性差。
- 机器语言,用二进制表示的代码。灵活、直接执行、速度快。
- 汇编语言,有简单的字母、单词的代码。应用于底层。
高级语言:可移植性好。
- 面向过程:自顶向下、逐步求精的模块化思想。如 C,Pascal,Fortran,Basic。
- 面向对象:把事物抽象成类,把实例化为对象。如 C++,C#,Java,Python,Javascript。
第一个高级语言:Fortran。
第一个面向对象的语言:Smalltalk。面向对象的设计雏形来自 Simula。
高级语言的翻译过程:
- 编译型语言:直接转化为机器语言,效率高,依赖编译器,跨平台性差。如 C++,C,Pascal。
- 解释型语言:执行一句翻译一句,不需要编译器,效率低,不产生目标文件。如 Python,Javescript,Java,C#。
信息编码
1Byte(字节)=8bit(比特),1Byte=1B,1bit=1b。
1KB(千字节)=1024Byte
1MB(兆字节)=1024KB
1GB(千兆字节)=1024MB
1TB(太字节)=1024GB
1PB(拍字节)=1024TB
如果要区别 Mib 与 Mb 之类的东西,Mib 为 1024 进 1 位,Mb 为 1000 进 1 位。不区别的话默认我们描述的 1Mb 之类的是 1024 进 1 位。
英文字符用 ASCII 码,用 \(7\) 位二进制数表示,共 \(128\) 个元素。多余的最高位取 \(0\)。占 \(1\) 个字节。
汉字用 \(2\) 个字节表示,类别:
- 区位码,我国汉字交换统一标准。有区号、位号。
- 国标码,也叫交换码,等于十六进制的区位码加 2020H。
- 机内码,计算机内部识别汉字的编码,最高位是 \(1\),与 ASCII 区别开了。
字形码:显示汉字时计算机用的字模。是 \(n \times n\) 的点阵。
图像数据数字化过程:
- 采样,扫描线划分成 \(M \times N\) 的格子。
- 量化:把像素值离散化为整数值。离散取值的个数叫做量化级数,表示量化的亮度值所需的二进制位数叫量化字长。量化字长越长,就越能反应图像的原有效果。
- 编码:把离散的像素矩阵编制成二进制编码组。
颜色深度=图片的位数。
一个 \(M \times N\) 像素的 \(D(位)\) 位图片,大小为 \(\frac{M \times N \times D}{8} Byte\)。
如果是视频,假设每秒帧数为 \(S(帧)\),拍了 \(T(s)\) 秒的视频,那么大小就是:\(\frac{M \times N \times D \times S \times T}{8} Byte\)。
声音数据数字化过程:
- 采样:将连续的数字信号,每隔一段时间抽出一个信号,让他成为时间上离散的脉冲序列。
- 量化:将离散的信号幅度用二进制数表示出来。每个采样点能表示的二进制位数叫做采样位数(量化位数),反映了声音的精度。
- 编码:把信号转化为数字编码脉冲。
设音频的采样频率为 \(P(Hz)\),采样位数为 \(D(位)\),声道数为 \(N(个)\),时间为 \(T(s)\)。
那么数据率 \(S=\frac{P\times D \times N}{8}Byte\)。
数据量 \(K=S\times T=\frac{P\times D \times N \times T}{8}Byte\)。
哈夫曼编码:每次选定两个权值最小的 node 合并,这两个 node 指向合并之后的 node,一个 node 边赋 \(0\),另一个赋 \(1\)。最后建出一棵树。哈夫曼编码不唯一,但必须满足以下条件:
- 任何编码都不为其他编码的前缀
- 编码最短
编码最短,是指我们自己建出来的树算出来的各字母编码长度等于他给的长度,就算满足要求。
Unicode 码,也叫万国码,是世界统一的二进制编码方式。UTF-8 最常用。
计算机储存的基本单位是 Byte,最小单位是 bit。
CSP 初赛要点复习的更多相关文章
- CSP 初赛复习 密码
CSP 初赛复习 密码是\(xj\)机房学生端密码
- ContentProvider要点复习
ContentProvider要点复习 ContentProvider作为四大组件之一,发挥着举足轻重的作用.与之相关联的另外两个类分别是ContentResolver和ContentObserver ...
- CSP初赛复习
初赛复习 初赛一定要过啊,否则付出的那么多都白搭了! while(1) ++csp.rp,++csp.luck,++csp.scores; 历史 2020年开始,除NOIP以外的NOI系列其他赛事(包 ...
- 2019.10.15 CSP初赛知识点整理
初赛需要的知识点整理如下: (1)计算机的硬件组成与基本常识 (2)单位/进制的转换 (3)进制/逻辑运算相关 (4)概率与期望 (5)排序的各种性质 (6)简单数据结构的使用(栈.队列.链表等) ( ...
- CSP初赛考点汇总
qwq 为SCP初赛选手(我)收集的各种定理qwq 更新: 1.为了初赛都能用,不限于定理了 2.主旨为在短时间内复习各算法,备初赛 3.请确定你学习(学懂了)了 \(\texttt{oi}\) 的基 ...
- [CSP初赛] 组合数学的三个技巧以及从另一方面思考组合类问题
也不知道老师讲不讲 话说好久没有水博客了,看了一点\(python\)然后就去搞文化课了 正好网课讲到组合数学,然后觉得还蛮难的(其实是我变菜了),就想到了以前的\(csp\)的组合数学基础 果然被我 ...
- Fragment要点复习
做系统时间久了,应用层的很多东西都忘了,但是基础还是得巩固,下面对fragment相关的知识点简单整理一下. 一.fragment的引入 fragment是从Android3.0(API level ...
- javaweb要点复习 jsp和servlet
jsp:就是java server page , html嵌入java ,所以更方面显示(V) serlet,就是服务器端小程序 java中嵌入html,更方面业务处理. jsp执行过程 1)客户 ...
- C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes
因为一些特性复杂,很多时候也用不到一些特性,所以忘记了,算是随笔,也当作一个临时查找的手册.没有什么顺序,很杂. 1.构造函数通过函数重载的机制可以有多个(不同的构造函数,参数个数,或者参数类型不同. ...
- C#字符串要点(复习专用)
一.字符串 通过string定义一个字符串,或者通过String类来创建对象. 通过new String() 创建有一下几种构造函数(从元数据),以此顺序创建string: // // 摘要: // ...
随机推荐
- 基于Github gist的代码片段管理工具Lepton
Lepton主要功能 无限制的公共/私人片段 无限制的标签 语言组 Markdown支持 Jupyter Notebook查看器支持 macOS / Win / Linux客户端 GitHub Ent ...
- JavaScript 绑定this
1.临时改变函数调用时this的指向 方法:call()与apply(),第一个参数为此次调用时的this指向,如果不传,则则等同于指定全局对象,后面的参数为函数原本的参数 区别:apply()方法传 ...
- LALR语法分析表
LALR语法分析表 1.LALR(向前看-LR)技术 2.在实践中常用,分析表比规范LR分析表小 LALR(1)项集族的内核的高效计算方法 1.构造G的LR(0)项集族的内核 2.确定自发生的符号 3 ...
- 【Amadeus原创】本地安装gitlab,初始化管理员密码
注册还是无法登录,最后发现,需要初始化root密码. docker exec进去,然后执行gitLab-rails,修改密码, 然后登录即可. [root@ecs-9684 ~]# docker ex ...
- SpringBoot项目请求路径中有正反斜杠的处理办法
在Application中添加静态代码块: //默认情况下Tomcat等服务器是拒绝url中带%2F或者%5C的URL,因为它们经浏览器解析之后就变成了/和\, // 服务器默认是拒绝访问的,所以需要 ...
- Qt/C++中英输入法/嵌入式输入法/小数字面板/简繁切换/特殊字符/支持Qt456
一.前言 在嵌入式板子上由于没有系统层面的输入法支持,所以都绕不开一个问题,那就是在需要输入的UI软件中,必须提供一个输入法来进行输入,大概从Qt5.7开始官方提供了输入法的源码,作为插件的形式加入到 ...
- 11.10javaweb学习
- [转]Windows10下CLion配置说明
Windows10下CLion配置说明CLion 是 C/C++的 IDE,可以配置多种编译环境,本文以配置MinGW编译环境为例. 安装CLion 的安装可直接到官网下载 ZIP,文件解压后直接运行 ...
- [转]C# SerialPort串口通信发送接收,处理接收数据完整
废话少说,直接上干货.感兴趣的读者自己去研究代码吧.请见谅. using System; using System.Collections.Generic; using System.IO.Ports ...
- JVM实战—9.线上FGC的几种案例
大纲 1.如何优化每秒十万QPS的社交APP的JVM性能(增加S区大小 + 优化内存碎片) 2.如何对垂直电商APP后台系统的FGC进行深度优化(定制JVM参数模版) 3.不合理设置JVM参数可能导致 ...