NOIP初赛_总结

小知识点总结

  • d+i=&d[i]
  • 图像的的存储计算公式 : 长 _ 宽 _ 深度(位:如 16 位)
    长和宽需换算成分辨率(就是像素) 如: 1024*248 注意:真彩色为 32 位
    16 位图深度就是十六
  • 1Byte (B) = 8bit(位)
  • 计算机的一些特殊逻辑运算

基础知识

逻辑运算和二进制运算

  1. 非: !  ¬
  2. 与(and): & ∧
  3. 或(or): | ∨
  4. 异或(xor): ⊕ ∧ 注意不同与逻辑与
  5. 按位取反 ~
  6. << 左移,最右边补 0
  7. >> 右移,标准没有规定最左边补什么!
    实践上,unsigned 直接补 0;signed 复制原先的最高位。

异或运算法则:转换为二进制 看每一位 如有不同取 1 否则取 0
e.g:0101 ∧ 0011 = 0110

真值,原码,反码,补码

  • 真值:e.g 10011 和 -111001
  • 原码:符号位正为 0,负为 1,其他与真值相同. e.g 010011 和 1111001
  • 反码:
  • 补码
    补码是这样一套体系:
    [0,2^31−1]这 2^31 个非负数,直接存储二进制。
    [−2^31,−1]这 2^31 个负数,存储其相应正数的加法逆元。
    e.g.
    7 存储为 000...00111
    -7 存储为 111...11001
    加法逆元: 𝑥 和 inv(𝑥) 加在一起,变成 0.

初赛数学

多学学高中数学吧。。。不然会死人的!

排列组合

  • 往后数下一个排列
    1 2 3 的所有排列如下:
    123 132 213 312 321
    往后数下一个排列就是按字典序的下一个
    如 132 的下一个排列为 213 注意 123 前无排列,321 后无排列
    e.g 164532往后数10给排列为:
164532
165234
165243
165324
165342
165423
165432
213456
213465
213546

注: 可用STL函数 next_permutation(arr, arr+size); 获取后面的排列
头文件 #include <algorithm>
参数说明:arr: 数组名  size:数组元素个数
详见[学习C++ ]C++ STL 全排列函数详解(排列组合与匹配算法)--1

进制转换

进制只是一种表示并不改变运算规律
如果你能背掉七进制的乘法口诀表,呵呵

基础

  • 其他进制转十进制:乘幂,再加法(通过进制的本质来转换)
  • 十进制转其他进制:短除法
  • 分数进制转换类比于小数的进制转换

技巧

  • 二进制与二的次方进制间的转换,如 2->8,2->16,16->2,8->2之类
  1. 2->8 :
    因为8为2的3次方,所以每三位划分一下,转为8进制后直接拼起来即可
    一定要补齐: 如10110.0011补齐为|010|110|.|001|100|
    转化为 2 6 . 1 4 (8)
    注意整数从右往左,小数从左往右,就是从靠近小数点的一方开始补齐

  2. 16->2
    每一个16进制字符化为4位二进制数即可,例:
    3A7.B1 H = |0011|1010|0111|.|1011|0001| B 即 1110100111.10110001

  • 无限不循环小数转分数,如:
  .    .
0.14285714257…

将循环节 142857 截取,应为 142857 有六位,就用 142857/999999,约分得到 1/7
0.142827142857…… 可表示为 1/7

前缀、中缀、后缀表达式 & 表达式树

树和图的性质

复杂度分析

组合数学

posted @ 2020-11-03 18:31  边缘坐标  阅读(136)  评论(1编辑  收藏  举报
-->