位运算
位运算是基于整数的二进制表示进行的运算。由于计算机内部就是以二进制来存储数据,位运算是相当快的。计算机对二进制进行的运算(+、-、*、/)都叫位运算。
基本的6种位运算: 按位与、按位或、按位异或、按位取反、左移和右移。
与、或、异或
运算
运算符
数学符号表示
解释
与
&
&、and
只有两个对应位都为1时才为1
或
异或
^
^、xor
只有两个对应位不同时才为1
异或运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即 a ^ b ^ b = a
取反取反是对一个数 num 进行的位运算,即单目运算。
取反暂无默认的数学符号表示,其对应的运算符为 ~。它的作用是把 num 的二进制补码中的 0 和 1 全部取反(0 变为 1,1 变为 0)。有符号整数的符号位在 ~ 运算中同样会取反。
补码:在二进制表示下,正数和 0 的补码为其本身,负数的补码是将其对应正数按位取反后加一。
左移和右移num << i 表示将 num 的二进制表示向左移动 i 位所得的值.num >> ...
树的概念
Concept of TreeStorage and Traversal of Trees和图的存储一致(建议用邻接表存储和链式前向星存储)
DFS遍历123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include <bits/stdc++.h>using namespace std;const int N = 1e5+5;struct node{ int nxt, to, cost; node(){} node(int x, int v, int c){ nxt = x, to = v, cost = c; }}e[N<<1];int Cnt = 0, head[N];void Add_Edge(int u, int v, int c){ e[Cnt] = node(head[u], v, c); head[u] = Cn ...
STL
全称:标准模板库(Standard Template Library)
STL六大部件容器(Containers)分配器(Allocators)算法(Algorithm)迭代器(Iterators)适配器(Adapters)仿函数(Functors)
容器vector用法和数组类似,可理解为一个“动态可变长的数组”
头文件 1#include<vector>
定义与初始化 1vector<int> a; //定义一个vector a
简单使用访问和数组一样,String支持[]加下标来访问string内的元素
12string s = "abcd";cout << s[1] <<"\n"; //结果输出b
比较运算符加法拼接遍历内置函数setstring字符串类,与char型字符串类似
头文件 1#include<string>
定义与初始化 1string s; //定义一个字符串s
简单使用访问和数组一样,String支持[]加下标来访问stri ...
Say-hi
让我们来look一look写文章能不能成功叭(^▽^)能不能插入图片呢嘿嘿
Markdown语法
md插图
如何在md中插入图片呢?
1.本地图片12# md文件vscode编辑<img src="/assets/pusheencode.webp" alt="示例图片" style="zoom:50%;" />
2.仓库图片(线上)123# md文件vscode编辑# ![description](link)![](https://cdn.staticaly.com/gh/0nedeer/images@master/img/e16d952adf1d40c59bc5a229557fdd7.jpg)
将本地图片上传至GitHub仓库(1)新建仓库 A. 在GitHub中新建一个仓库 仓库名:images ##专门用于存放图片 注意!创建时添加readme文件 B. 把仓库克隆到本地 在blog文件夹中打开git bash
1$ git clone "新建仓库网址"
(2)放置图片 A. 在克隆好的文件夹下面创建一个img文件夹 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
图论基础
图论〔Graph Theory〕是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。
Concept of GraphStorage and Traversal of Graphs所谓遍历(Traversal),是指沿着某条搜索路线,依次对图中每个顶点均做一次访问。
邻接矩阵使用一个二维数组 a[i][j] 为0或1表示i -> j这条边是否存在。如果是赋权图,a[i][j]可以直接存储i -> j的边权。
邻接矩阵在稀疏图上效率很低(尤其是在点数较多的图上,空间无法承受),所以一般只会在稠密图上使用邻接矩阵。
12345678910111213141516171819202122232425#include <bits/stdc++.h>using namespace std;const int N = 1e5+5, M = 2e5+5;int n, m, u, v, c, a[N][N];int main()& ...
debug大法
众所周知,程序不出bug是好事,程序出bug是常态,如何debug是重点。那么,这篇文章将会简单说说debug大法~
调试输出调试• 适用于长度短,错误容易发现的代码。• 最简单,最直接就能够使用。• 使用非常方便,而且输出信息灵活多变,比如观察一个表达式值的变化。• 直接把你的过程量输出出来。
对拍什么是对拍?对拍就是用你的代码和另一份代码不断去运行数据比较结果,直到找出一组能卡掉你的代码的数据。所以前提就是另一份代码必须保证正确性(一般直接打暴力就好)。然后还需要一份能够产生随机数据的代码,接着在批处理文件上写上以下代码:
123456789@echo off:loopstd.exe > in.intext.exe <in.in> 1.outtest1.exe <in.in> 2.outfc 1.out 2.outif not errorlevel 1 goto looppause:end
其中:• std.exe 是产生数据的代码• test.exe 是复杂度正确但WA的做法• test1.exe 是暴力的做法• fc 1.out 2.out 比 ...