![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
杂记
随便记着玩玩
追寻远方的人
你的职责是平整土地,而非焦虑时光。
展开
-
Resolver error: Error: The VS Code Server failed to start 的解决方案
打开VS Code菜单"View"->“Command Palatte”->“Kill VS Code Server on Host”选择出问题的远程服务器杀掉那个上面的VS Code server。SSH打开远程时,远程服务器断开后无法连接。原创 2024-03-20 20:55:10 · 600 阅读 · 0 评论 -
报错“Inputs do not occupy the same physical space”
预测的noddi指标和GT的noddi指标没有对齐。原创 2023-12-09 19:48:14 · 196 阅读 · 0 评论 -
vscode打开服务器插件加载不出来
就不会analyze数据集了。原创 2023-12-07 20:36:10 · 272 阅读 · 0 评论 -
2023北航计算机院保研经历
抵的成绩大致是这样换算的:若你的累计排名是10%,那么你的分数就会换算成 参加机考同学中排位百分之10的同学的成绩。因为我对学术感兴趣,所以想选一个不错的老师,提前也看了官网导师介绍,就没有广撒网,就发了一份邮件,大概大三下六月份联系上一个软件开发环境国家重点实验室的老师。之前看面经都说是压力面,我那组真的很放松,老师都很好。8.15又问了老师一下,去北航见了一面,聊了一下实验室的情况,感觉很理想,签了同实验室的另一位老师。数学:AX=0有解的条件, 函数,图,关系三者的范围大小, 偏序,全序关系。原创 2023-11-25 11:00:15 · 288 阅读 · 0 评论 -
sublime配置
【代码】sublime配置。原创 2023-05-23 11:49:04 · 92 阅读 · 0 评论 -
jupyter 显示 connection reset 错误
所以,如果感觉一个问题越解决问题越多的时候,这时应该考虑暂时放弃这个思路,进而换个思路解决问题。问题解决后,又觉得这个问题似乎并不难,但是这个看似不难的问题却花了自己较长的时间。因为在上面的代码中已经卸载了该插件,所有需要先安装该插件,然后再直接对其进行修改。原创 2022-09-02 17:30:46 · 1052 阅读 · 0 评论 -
经典Dijkstra与最长路
有一题求最短路和最长路的题,由于基础不够扎实,天真地以为改一下松弛操作、重载一下优先队列即可。事实上,经典Dijkstra并不能求最长路。正权边图中求最长路可使用SPFA经典Dijsktra可在全负权边图中跑最长路、全正权边图中跑最短路Dijsktra+堆优化的时间复杂度为O(ElogV)、SPFA(BellmanFord)+堆优化的时间复杂度是O(VE)。httpshttps。.........原创 2022-07-28 11:46:38 · 445 阅读 · 0 评论 -
扩展欧几里得算法详解
扩展欧几里得算法详解为了介绍扩展欧几里得,我们先介绍一下贝祖定理:即如果a、b是整数,那么一定存在整数x、y使得ax+by=gcd(a,b)。换句话说,如果ax+by=m有解,那么m一定是gcd(a,b)的若干倍。(可以来判断一个这样的式子有没有解)有一个直接的应用就是 如果ax+by=1有解,那么gcd(a,b)=1;要求出这个最大公因数gcd(a,b),我们最容易想到的就是古老悠久而又相当强大的辗转相除法:/*求两个正整数 a 和 b 的 最大公约数 d则有 gcd(a,b) = gcd原创 2022-01-22 09:41:41 · 158 阅读 · 0 评论 -
由数据范围反推算法复杂度以及算法内容
由数据范围反推算法复杂度以及算法内容一般ACM或者笔试题的时间限制是1秒或2秒。在这种情况下,C++代码中的操作次数控制在 1e7∼1e8 为最佳。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:n≤30, 指数级别, dfs+剪枝,状态压缩dpn≤100 => O(n3),floyd,dp,高斯消元n≤1000 => O(n2),O(n2logn),dp,二分,朴素版Dijkstra、朴素版Prim、Bellman-Fordn≤10000=> O(n∗n√),原创 2022-01-12 18:05:15 · 164 阅读 · 0 评论 -
线段树原理
线段树线段树简单说就是用二叉树来构造,树的每一个结点代表一条线段[L,R],用于区间处理。如果L=R,说明这个结点只有一个点,是叶子结点;如果L<R,说明不止一个点,左儿子[L,M],右儿子[M+1,R],其中M=(L+R)/2。线段树中,如果一个节点的编号为x,那么左儿子的编号为2x,右儿子的编号为2x+1。N个元素的线段树的高度为logN+1。建树普通二叉树建线段树const int Max=10000;struct { int l, r, len;//len储存这个区间原创 2022-01-05 12:07:16 · 78 阅读 · 0 评论 -
Splay树
Splay树Splay树是一种BST树,允许查找、插入、删除、分割、合并等操作。Splay树的原理:为了使整个查找时间更少,被查频率高的那些结点应当经常处于靠近树根的位置。Splay树可以通过旋转的方式把被访问结点旋转到树根的位置以减少查找时间。与Treap树的不同:Splay树允许把任意结点旋转到树根,Treap树形态固定所以不能。Splay树分裂、合并更简便。Splay树的操作提根(把结点x旋转到根)x的父结点是根,只需旋转一次。x是左儿子则右旋,反之左旋,且前后中序顺序不变。x原创 2021-12-31 10:26:53 · 1268 阅读 · 0 评论 -
Treap树
Treap树Treap一词是Tree和Heap的合成词,也就是这是一颗带有堆性质的树,即树堆,Treap树是一种排序二叉树(二叉搜索树、二分检索树 Binary Serach Tree),简称BST,也就是满足value值大小关系是左孩子<根<右孩子,这样就满足了排序二叉树,刚才讲过,Treap树还满足堆的性质,那么它的哪个值满足堆的性质呢,并不是value,而是一个优先级rank值,这个rank值是人为添加的,一般使用一个随机数,这个rank是为了维持二叉树的平衡而设定的,总的说来,对于键值原创 2021-12-30 20:53:49 · 580 阅读 · 0 评论 -
vscode 配置
{ "tasks": [ { "type": "cppbuild", "label": "C/C++: g++.exe build active file", "command": "D:\\CodeBlocks\\MinGW\\bin\\g++.exe", "args": [ "-fdiagnostics-color=always",原创 2021-12-01 14:15:27 · 219 阅读 · 0 评论 -
迭代加深搜索 (IDDFS)和IDA算法
迭代加深搜索 (IDDFS)和IDA算法IDDFS:我个人这个搜索的理解就是以BFS的思想写DFS。具体来说就是,**首先深度优先搜索k层,若没有找到可行解,再深度优先搜索k+1层,直到找到可行解为止。**由于深度是从小到大逐渐增大的,所以当搜索到结果时可以保证搜索深度是最小的。这也是迭代加深搜索在一部分情况下可以代替广度优先搜索的原(还比广搜省空间)。前提:题目一定要有解,否则会无限循环下去。好处:1.时间复杂度只比BFS稍差一点(虽然搜索k+1层时会重复搜索k层,但是整体而言并不比广搜慢很原创 2021-12-02 15:11:59 · 1320 阅读 · 0 评论 -
双向广搜 DBFS
双向广搜 DBFS双向:简而言之就是从起点(正向搜索)和终点(逆向搜索)同时开始搜索,当两个搜索产生的一个子状态相同时就结束搜索。通常有两种实现方法:1、用一个队列来储存子状态,起点和终点先后入队,正向搜索和逆向搜索交替进行,两个方向的搜索交替扩展子状态。直到两个方向的搜索产生相同的子状态结束。2、两个方向的搜索虽然是交替扩展子状态的。但是两个方向生成的子状态的速度不一定平衡。所以,可以每次选择子状态数较少的那个方向先进行扩展。这样就不会出现两个方向生成子状态的速度的不平衡,可以明显的提高效率哦。原创 2021-11-29 21:59:15 · 296 阅读 · 0 评论 -
A算法简单原理
A* 算法简单原理A* 算法是一种高效的启发式搜索算法,在二维的栅格地图上寻路效果好,它通过估算节点的代价评估函数值并作为节点的综合优先级,当选择下一个需要遍历的节点时,再选取综合优先级最高的节点,逐步地找到最优路径。A* 算法可以快速的找到代价值最小,路程最短的路径,但是随着栅格精度的提高和地图尺寸的扩大,对无用节点的重复搜索评估会导致 A* 算法搜索时间呈指数级增长。简单的说就是在一个栅格地图中,通过不断计算当前点与目标点的代价值来选择下一步应该怎么走。这个代价值主要是有两部分组成。A* 算法的组原创 2021-11-29 15:36:05 · 1869 阅读 · 0 评论 -
单调栈的使用
单调栈什么是单调栈?从名字上就听的出来,单调栈中存放的数据应该是有序的,所以单调栈也分为单调递增栈和单调递减栈单调递增栈:单调递增栈就是从栈底到栈顶数据是从大到小单调递减栈:单调递减栈就是从栈底到栈顶数据是从小到大模拟单调栈的数据push和pop模拟实现一个递增单调栈:现在有一组数10,3,7,4,12。从左到右依次入栈,则如果栈为空或入栈元素值小于栈顶元素值,则入栈;否则,如果入栈则会破坏栈的单调性,则需要把比入栈元素小的元素全部出栈。单调递减的栈反之。10入栈时,栈为空,直接入原创 2021-11-29 08:52:58 · 101 阅读 · 0 评论 -
八数码问题
八数码问题八数码问题:我想大家小时候一定玩过八数码的游戏,如下图:在一个九宫格里面放入8个数字,数字只能上下左右移动,并且只能移动到空白处。通过若干此移动后,能把数字移动成图1.1右方所示图案。图1.1(左边为开始格局,右边为移动后最终格局下图是图1.1下一个格局的三种情况:如果按正常的思维,采用盲目搜索的话,不仅搜索的次数多,而且往往容易陷入死循环中,所以面对此问题需要一种策略——启发式搜索启发式搜索:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置原创 2021-11-28 14:55:56 · 10387 阅读 · 0 评论 -
康托展开(Cantor Expansion)
康托展开(Cantor Expansion)康托展开简介:官方简介:康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。通俗简介:康托展开可以求解一个排列的序号,比如:12345 序号为 1 ,12354序号为2,按字典序增加编号递增,依次类推。康托逆展开可以求解一个序号它对应的排列是什么。康托展开解释:先给出康托展开的公式:先对这个公式里变量进行解释,大家不理解这个公式没关系,慢慢往后看,很简单原创 2021-11-28 12:04:55 · 323 阅读 · 0 评论 -
子集生成和组合问题
子集生成和组合问题所有组合子集的数量和二进制数的总个数等价每一个子集对应一个二进制数#include <bits/stdc++.h>using namespace std;void print_subset(int n){ for (int i = 0; i < (1 << n); i++) { // 0~2的n次幂,每一个i的二进制数对应一个子集,一次打印一个子集,最后得到所有的子集 for (int j = 0; j &l原创 2021-11-24 17:11:04 · 264 阅读 · 0 评论 -
递归和排列
递归和排列递归打印全排列#include <bits/stdc++.h>using namespace std;// 交换也可以通话STL的swap函数 但是速度慢一点#define Swap(a, b) \ { \ int temp = a; \ a = b; \ b = temp; \ }int data[] = {1, 2, 3, 4, 5, 6, 7,原创 2021-11-24 16:33:42 · 285 阅读 · 0 评论 -
栈和卡特兰数(Catalan number)
栈和卡特兰数(Catalan number)1.饭后,姐姐洗碗,妹妹把姐姐洗过的碗一个一个地放进碗橱摞成一摞。一共有n个不同的碗,洗前也是摞成一摞的,也许因为小妹贪玩而使碗拿进碗橱不及时,姐姐则把洗过的碗摞在旁边,问:小妹摞起的碗有多少种可能的方式?2.给定n个数,有多少种出栈序列?3.一个有n个1和n个-1组成的字串,且前k个数的和均不小于0,那这种字串的总数为多少?这三个问题具有相同的结构,三个问题是可以互相转化。将姐姐放碗看做入栈操作,将妹妹放碗看做出栈操作。则问题一变为问题二。将入栈操作记为原创 2021-11-18 12:14:06 · 825 阅读 · 0 评论 -
鸽巢原理的简单应用
鸽巢原理简单的应用示例n个人相互握手,两人之间最多握一次,但没有人一次也不握,则至少有两个人握手次数相同图论中的定义设G=<V,E>为任意无向图,顶点总和为|V|,边数总和为|E| ,若|E|=m,则所有顶点的度数和=2m图论–>现实的理解顶点–>人边–>人与人握手度–>一个人与其他人握手的次数|E|=m–>共m次握手总定理–>n个人参与握手,若发生握手的总次数为m,则每个人的握手次数之和为2m理解:假设只有两个人,求总握手次数原创 2021-11-15 08:50:45 · 491 阅读 · 0 评论