自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 自己动手写docker——Namespace

Namespace类型系统调用参数作用隔离挂载点视图,简单来说隔离了mount命令隔离hostname隔离ipc与message queue隔离进程PID隔离network隔离userid和groupid下面我们用Go程序创建一个隔离的进程​import ("os""os/exec""syscall"​err!= nil {panic(err)​我们可以通过一些命令来查看我们确实处于在了新的Namespace中,当然,因为我们使用了。

2024-05-22 10:19:20 708

原创 MapReduce简介

我们所遇到的大多数计算问题都很直观,但是当计算的数量十分庞大时,我们往往要借助于成百上千的机器共同计算来加速这个过程,但在从一个机器拓展到一个集群时我们会遇到比原来多得多的问题。比如我们该如何并行化计算,如何把数据分发到机器中,如何处理机器宕机带来的问题,毫无疑问,这是一个复杂的问题。分布式的计算带来了各种各样复杂的问题,但MapReduce的出现给解决分布式计算带来了一个足够简洁的解决方案。

2023-04-15 21:54:49 904

原创 程序的机器级表示(二)

这一小节我们将介绍数据格式与通用寄存器。首先要说明的是我们将使用ATT而非Intel格式的指令,两者之间的差别不会太大,我相信你能很快习惯它。

2023-03-29 20:13:11 279

原创 程序的机器级表示(一)

计算机执行机器代码,用字节序列编码低级操作,而编译器基于编译语言的规则、目标机器的指令集和操作系统遵循的惯例,经过一系列阶段生成机器代码。GCC C语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的文本表示。在本章中,我们会近距离的观察机器代码,以及人类可读的表示——汇编代码。

2023-03-28 22:21:33 489

原创 BFS算法

BFS博客的PDF点击此处下载文章目录BFS什么是BFSBFS算法流程BFS算法流程举例伪代码c++代码参考时空复杂度分析BFS练习题单什么是BFSBFS全称为Breadth First Search,中文名广度优先搜索或宽度优先搜索。广度优先即按层去遍历整个图,一层访问结束后再去访问下一层。算法过程可以看做是图上火苗传播的过程:最开始只有起点着火了,在每一时刻,有火的节点都向它相邻的所有节点传播火苗。BFS算法流程在标准的BFS中,所有的点被分为两种:搜索过的未搜索过的

2022-04-18 11:35:21 2213

原创 AtCoder Beginner Contest 248

AtCoder Beginner Contest 248文章目录AtCoder Beginner Contest 248A - Lacked NumberB - SlimesC - Dice SumD - Range Count QueryE - K-colinear LineF - Keep ConnectEx - Beautiful SubsequencesA - Lacked Number题意:给出10个数字,输出0~9中未出现的那个数字。思路:统计数字出现情况即可。时间复杂度:

2022-04-17 18:44:19 971 1

原创 hexo教程--教你半个小时搭建自己的博客

hexo教程–教你半个小时搭建自己的博客文章目录hexo教程--教你半个小时搭建自己的博客前言本地搭建安装hexo初始化hexo在本地运行特别需要注意的命令部署githubgithub上创建仓库配置文件完成部署需要特别注意的命令最后关于发布文章前言hexo是一个相当好用的博客框架,仅仅用短短的几十分钟就可以上手。本文会着重于hexo的使用,在开始之前,请确保安装好git和node.js,涉及到这个部分的教程在网上都很多,在这里不会额外介绍。如果想快速看到效果,请务必按照下面的步骤执行。

2022-04-16 21:09:51 1503

原创 Codeforces Round #781 (Div. 2)

Codeforces Round #781 (Div. 2)文章目录Codeforces Round #781 (Div. 2)A. GCD vs LCMB. Array Cloning TechniqueC. Tree InfectionD. GCD GuessA. GCD vs LCM题意:给定数n,找到a,b,c,d四个数满足下列条件:1.a+b+c+d=na+b+c+d=na+b+c+d=n2.gcd(a,b)=lcm(c,d)gcd(a,b)=lcm(c,d)gcd(a,b)=l

2022-04-09 12:04:09 4330 1

原创 BFS——1429 胜利大逃亡(续)

1429 胜利大逃亡(续)文章目录1429 胜利大逃亡(续)题意:思路:本题的重点在于标记数组,除了基本的坐标(x,y)(x,y)(x,y)以外,在同一位置是否有某个钥匙显然会影响结果,所以这样一来,我们就要为每个钥匙拥有与否多开一维数组,这样总共就会有12维的标记数组。但这样显然是不方便的,我们就可以用二进制数来代替,这就是状态压缩。例子:有钥匙aaa:0000000001有钥匙bbb:0000000010有钥匙a和ba和ba和b:0000000011AC代码:

2022-04-08 07:33:37 330

原创 BFS——1254推箱子

1254推箱子文章目录1254推箱子题意:思路:箱子的移动按照正常的BFS拓展即可。重点在于判断搬运工能否把箱子往某个方向推:显然,箱子需要移动到(x+1,y)(x+1,y)(x+1,y),搬运工需要移动到(x−1,y)(x-1,y)(x−1,y)箱子所在的位置对搬运工来说是无法跨越的障碍。搬运工能否到达目标地并不能简单的判断,需要再用BFS来判断可行性(总的来说,出现了BFS套BFS)。此外,标记数组也应该得到修改,因为搬运工在不同的位置,会对上述可行性的判断产生影响,

2022-04-08 07:32:43 626

原创 BFS——1495 非常可乐

1495 非常可乐文章目录1495 非常可乐题目:思路:抽象BFS,把三个杯子的水量抽象成(x,y,z)(x,y,z)(x,y,z)的一个三维坐标,并按照题目要求修改拓展方式,在此基础上BFS即可(可以理解为在三维空间的BFS)。拓展方式:对于一个坐标(a,b,c)(a,b,c)(a,b,c)一定要转移到类似于(a−(N−b),N,c)(a-(N-b),N,c)(a−(N−b),N,c)或者(0,a+b,c)(0,a+b,c)(0,a+b,c)等,其实就是模拟倒水过程,倒水过程要

2022-04-04 09:48:01 269

原创 AtCoder Beginner Contest 246

AtCoder Beginner Contest 246文章目录AtCoder Beginner Contest 246A - Four PointsB - Get CloserC - CouponD - 2-variable FunctionE - Bishop 2F - typewriterG - Game on Tree 3Ex - 01? QueriesA - Four Points题意:给出三个点,找到一个点,让这4个点组成一个矩形思路:分别找到横纵坐标中只有一个的值。时间

2022-04-03 12:03:24 2578 7

原创 BFS——1253 胜利大逃亡

1253 胜利大逃亡文章目录1253 胜利大逃亡题意:思路:将BFS原来二维的部分改成三维,其余部分均不变即可。注:用cin读入要关流,否则会超时读入优化代码:std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);AC代码:#include<bits/stdc++.h>typedef long long ll;const int N = 60,

2022-04-02 14:42:34 383

原创 BFS——1242 Rescue

1242 Rescue文章目录1242 Rescue题意:解释如下:a:终点{\color{red}a:终点}a:终点r:起点{\color{red}r:起点}r:起点.:路{\color{red}.:路}.:路#:障碍{\color{red}\#:障碍}#:障碍x:敌人(需要花一个单位时间打败){\color{red}x:敌人(需要花一个单位时间打败)}x:敌人(需要花一个单位时间打败)输出从起点到终点的最小步数,如果不存在路径,输出"Poor ANGEL has to sta

2022-04-02 14:21:35 159

原创 BFS——1181 变形课

1181 变形课文章目录1181 变形课题意:思路:把题目抽象成图,抽象方法如下:起点:b终点:m路径:对于一个字符串soonsoonsoon,表示从sss到nnn存在一条路径。根据如上规则建图bfs即可。AC代码:#include<bits/stdc++.h>typedef long long ll;const int N = 30,M = 2e4+10,INF = 0x3f3f3f3f,mod = 1e9+7;int que[N];boo

2022-04-02 13:51:42 519

原创 BFS——1180诡异的楼梯

1180诡异的楼梯文章目录1180诡异的楼梯题意:中文题面,题意也比较直接,直接上原题。思路:在楼梯不能通过的时候,原地等待一个单位时间就可以了。注:本题还有一种优先队列的做法,我们可以认为通过一个当前无法通过的楼梯,所花费的时间是2个单位时间(加上等待的时间),但是这样做会使得队列中每次出队的不一定是步数最小的点,所以要用优先队列维护(其实没什么必要这样做,正常的bfs就可以解决)。AC代码:不使用优先队列:#include<bits/stdc++.h&gt

2022-04-02 11:04:46 306

原创 BFS——1175连连看

1175连连看文章目录1175连连看题意:给出一个n∗mn*mn∗m的棋盘,玩一个类似于连连看的游戏。1 2 3 40 0 0 04 3 2 10:空格{\color{red}0:空格}0:空格其他:不同的棋子{\color{red}其他:不同的棋子}其他:不同的棋子给定棋盘以后,给定起点startx,startystart_x,start_ystartx​,starty​和终点endx,endyend_x,end_yendx​,endy​,要求从起点走到终点,方向转折的次数不能超

2022-04-01 11:51:17 4560

原创 Codeforces Round #780 (Div. 3)

Codeforces Round #780 (Div. 3)文章目录Codeforces Round #780 (Div. 3)A. Vasya and CoinsB. Vlad and CandiesC. Get an Even StringD. Maximum Product Strikes BackE. Matrix and ShiftsF1. Promising String (easy version)A. Vasya and Coins题意:小明有aaa枚1元硬币和bbb枚2元硬币,输

2022-04-01 10:16:07 966 5

原创 最小二乘法

最小二乘法文章目录最小二乘法从高数分数预测开始最小二乘法在问题中的使用在代码中的实现(python)从高数分数预测开始给一组数据如下:认真听课的时间最后的考试分数2040256030753580408545100我们假设认真听课的时间为xxx,最后的考试分数为yyy。并且假设两者间的关系为一个线性函数:y=k∗x+by=k*x+by=k∗x+b那么我们要怎么通过上面的数据得到一个尽可能精确的模型呢。最小二乘法在问题中的使

2022-03-31 16:16:54 1784

原创 BFS——广度优先搜索

BFS的模板什么是bfs:广度优先搜索,在搜索过程中由近及远,层层搜索。从一个简单问题开始:首先,看一个最简单的01迷宫:1 1 1 0 01 0 1 1 01 0 1 1 01 1 0 1 0起点:(1,1){\color{red}起点:(1,1)}起点:(1,1)终点:(5,5){\color{red}终点:(5,5)}终点:(5,5)要求我们输出从起点走到终点的最小步数。不妨先给出代码,然后层层分析。模板代码:#include<iostream>

2022-03-31 15:13:30 999

原创 BFS——1072 Nightmare

1072 Nightmare文章目录1072 Nightmare题意:小明被困在一个迷宫如下中:1.小明每次可以花一个单位时间往上下左右的某个方向移动一格。2.小明身上有一个炸弹,在第6个单位时间就会爆炸,在第6个单位时间走到终点或者刷新炸弹时间是无效的。举例如下:2 1 1 0 1 1 1 01 0 4 1 1 0 4 11 0 0 0 0 0 0 11 1 1 4 1 1 1 30.障碍{\color{red}0.障碍}0.障碍1.平路{\color{red}1.平路}

2022-03-31 14:39:38 407

原创 Codeforces Round #779 (Div. 2)(Permutationforces)

Codeforces Round #779 (Div. 2)(Permutationforces)文章目录Codeforces Round #779 (Div. 2)(Permutationforces)A. Marin and PhotoshootB. Marin and Anti-coprime PermutationC. Shinju and the Lost PermutationD1. 388535 (Easy Version)A. Marin and Photoshoot题意:给定一个

2022-03-28 10:29:43 940 2

原创 AtCoder Beginner Contest 245

AtCoder Beginner Contest 245文章目录AtCoder Beginner Contest 245A - Good morningB - MexC - Choose ElementsD - Polynomial divisionE - Wrapping ChocolateF - Endless WalkG - Foreign FriendsA - Good morning题意:语法题:给定两个起床时间。若第一个早于等于第二个,输出Takahashi{\color{Red}

2022-03-27 09:52:36 1304 16

原创 CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes) Editorial

CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes!) Editorial文章目录CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes!) EditorialA. Good PairsB. Subtract OperationC. Make Equal With ModE. Equal Tree SumsA. Good Pairs题意:给定一个长度为n的序列:a1,a2,…,an−1,ana_{1},a_{2

2022-03-25 13:07:47 783 7

原创 Educational Codeforces Round 125 (Rated for Div. 2)

A. Integer Moves题意:初始时在点(x,y) ,如果(x,y)与点(x1,y1)满足如下条件,那么可以从(x,y)转移至(x1,y1):即两点之间的距离为整数,即可转移。请你输出从(x,y)----->(0,0)的最小步数。 思路:我们可以证明,最大步数不会超过2:设初始点为(x,y) 我们可以选择这两种方案进行转移。 (x,y)-->(x,0)-->(0,0),(x,y)-->(0,y)-->(0,0) 显然沿...

2022-03-24 10:42:43 1497

原创 从程设作业到线段树

前言:一道very easy的程设题我的提交论一个人是怎么偷懒的:#include<stdio.h>int main(){ int maxn = -10000,minn = 10000; int x; while(scanf("%d",&x)!=EOF) { maxn = maxn > x ? maxn : x; minn = minn < x ? minn : x; }..

2022-03-22 16:32:14 1329

原创 AtCoder Beginner Contest 244

A - Last Letter题意给定一个字符串输出最后一个字符思路:语法题,见代码时间复杂度 :O(n)AC代码:#include<bits/stdc++.h>typedef long long ll;typedef unsigned long long ull;const int N = 2e5+10,M = N * 2,INF = 0x3f3f3f3f,P = 9901;int main(){ std::io...

2022-03-21 16:42:25 2350

原创 Codeforces Round #778 (Div. 1 + Div. 2, based on Technocup 2022 Final Round)

目录A. Maximum Cake TastinessB. Prefix RemovalsC. Alice and the CakeA. Maximum Cake Tastiness题意:给定一段序列,长度为n:定义这个序列的值为:你可以进行一次操作,选择区间[ l, r ],并翻转区间内的数,使得序列的值最大。思路:找到序列中第二大的数,将它翻转到最大的数旁即可。即答案就是序列中最大数和次大数的和。时间复杂度: ...

2022-03-21 14:20:39 719

原创 DFS——深度优先搜索

什么是DFSDFS,中文名深度优先搜索,是一种图的搜索方式,本质上是一种递归。dfs相当自由,学dfs可能最高境界就和打太极似的,无招胜有招DFS的经典应用:1.全排列虽然感觉没有贴题目的必要这应该是大多数dfs初学者的入门之题了,对于递归,我想读者要有这样一个概念,在递归的每一个过程中,我们都会取试着解决一个子问题,所以这个观念才是使用好dfs的关键,也就是想清楚当前要干什么,因为我们的每次尝试只不过是规模更小的子问题。 ...

2022-03-17 22:44:33 3309 2

原创 0x01位运算——起床困难综合症

0x01位运算——起床困难综合症思路分析位运算的特点之一就是二进制下运算不进位。因此在$~x_{0}~$可以任意选择的情况下,参与位运算的各个位(bit)是无关的。而每一个的初始取值只有0和1两种情况,所以我们只需要枚举每一位,比较初始取值0和1情况下,经过n个防御门后得到的值,在0和1这两种情况下取答案较大的即可。同时,因为x0x_{0}x0​的取值是有范围限制的,所以我们在最终大小相同的情况下,保证x0x_{0}x0​尽可能小,即在初始值0和1经过n个防御们后得到值相同时,我们会

2022-03-15 15:01:57 525

原创 0x01位运算——最短Hamilton路径

0x01位运算——最短Hamilton路径说明本题的正解——状态压缩dp,我们将在0x56节详细介绍思路分析我们可以使用一个**n维的bool数组**记录下某时刻经过了哪些点,未经过哪些点,而这里的**n维的bool数组**,可以用一个n位的二进制数代替。在这个二进制数中,第i位为1则代表这个点已经被拜访过。用F[i,j]F[i,j]F[i,j]表示当前经过了那些点(用 i 表示),现在在 j 点的最短距离。状态转移方程(不做详解):F[i,j]=min(F[i,j],F

2022-03-15 14:43:25 105

原创 0x01位运算——64位整数乘法

0x01位运算——64位整数乘法问题简析C++内置的最高整数类型是64位,所以显然不能通过直接运算得到答案,我们需要一些特殊的处理方法,在这里提供两种方法。思路一类似于快速幂的思想,把b拆分成k位二进制...

2022-03-15 14:15:28 1578

原创 0x01位运算——a^b

0x01位运算——a^b题目:思路分析如果b在二进制下有k位,每一位为Ci如果b在二进制下有k位,每一位为C_{i}如果b在二进制下有k位,每一位为Ci​可以将b分解为:可以将b分解为:可以将b分解为:b=Ck−1∗2k−1+Ck−2∗2k−2+...+C0∗20b=C_{k-1}*2^{k-1}+C_{k-2}*2^{k-2}+...+C_{0}*2^{0}b=Ck−1​∗2k−1+Ck−2​∗2k−2+...+C0​∗20因为2k−1=(2k−2)2,所以很容易用递推求出每一个乘积项

2022-03-15 09:43:01 460

原创 0x01——位运算

0x01———位运算运算符优先级从左到右优先级依次降低加减移位比较大小位与异或位或+,-<<,>><,>==,!=&xor(C++^)|

2022-03-14 17:14:33 3887

原创 bfs—宽(广)度优先搜索(模板详解及各种拓展)

前言在计算机领域中,图的是个很特殊的存在。图可以是具体的:图中的点可以是一个个城市,边可以是城市中的一条条道路

2022-03-04 10:34:46 4556 1

原创 离散化(useless algorithm)/(雾

目录前言离散化1.可能要用的前置知识2.map实现离散化(stl香香香3.正常版本(可能1.开一些数组2.存下所有的数3.排序,去重4.最后,怎么找到一个数映射以后的值题外话前言做题时,统计一个数字的出现次数是常见的情况,但是有些时候会出现下面这种情况翻译软件不太行题意:就是有N份面条,每份面条有一个长度Ai现在有个人它接下来M的天,每天要吃长度为Bi的面条,询问一下是否能够满足他的要求。显然,这题...

2022-02-27 21:13:55 704

原创 珂朵莉树(永远喜欢珂朵莉/doge)

前言最近刚刚学内容大概是借鉴的吧,感觉这个数据结构不仅简单,还很强,有着非常柯学科学的时间复杂度,处理问题充满了暴力的美感,主要可以解决一下区间问题,在随机数据因为暴力很容易被卡下时间复杂度优秀,比线段树此类数据结构有着更小的常数。背景来源是一道远古div1C的题,也是珂朵莉树的模板题我还没写过,最后会给出这道模板题。关于她柯学的另一个别名——ODT,来源是其发布者Old driver。虽然这玩意名字怪怪的,但他的操作还是很简单的,很少的不都是暴力吗。大家别被它的名字吓到,其.

2022-02-26 19:37:49 932

原创 Codeforces Round #677 (Div. 3)

A. Boring Apartments题意:存在一个有规律的数列1,11,111,1111,2,22,222,2222...9,99,999,9999。给定数列中的某个数x,询问该数(包括)前有几个数。思路:取出这个数的最后一位x,答案就是(x*4+当前数的位数)时间复杂度: O(logn)AC代码:void solve(){ int n; cin>>n; int k = n%10; int cnt = ...

2022-02-08 14:18:30 616

原创 Codeforces Round #713 (Div. 3)

目录A. Spy Detected!B. Almost RectangleC. A-B PalindromeD. Corrupted ArrayE. Permutation by SumF. EducationG. Short TaskA. Spy Detected!题意:给定长度为 的数组,该数组中除了一个数,其他所有数均相同,找到这个不同数的下标,总共有t 组数据。思路: 数据范围很...

2022-02-06 12:40:07 540

原创 最小生成树——Prim算法(详细图解)

最小生成树的概念在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边,而 w(u, v) 代表此的边权重,若存在 T 为 E 的子集(即)且为无循环图,使得的 w(T) 最小,则此 T 为 G 的最小生成树。最小生成树其实是最小权重生成树的简称。...

2021-11-28 22:41:57 206273 29

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除