vi/vim使用进阶
[2020.07.02]vi/vim使用进阶https://blog.easwy.com/archives/advanced-vim-skills-catalog/3* vi/vim使用进阶: vimrc初步4* vi/vim使用进阶: 保存项目相关配置5* vi/vim使用进阶: 使用标签(tag)文件6* vi/vim使用进阶: 使用taglist插件7* vi/vim使用进阶: 文件浏览和缓冲区浏览8* vi/vim使用进阶: lookupfile插件9*...
vim-config
vim是linux系统中的编辑工具,配置好vim可以大大提高我们的工作效率。在使用vim时我们常常需要自己配置vimrc,安装需要的插件等。这一系列的配置比较繁琐,很多人望而生畏,于是渐渐放弃vim。最近看到一个博主关于[vi/vim使用进阶]的博客,学习后用起来非常方便。但弊端是配置的插件繁多,快捷键繁多,不易记忆,一旦更换电脑环境需要重新配置。为此,我将[vi/vim使用进阶]中的vim配置做成了软件包(vim-config)托管在Github上,到了不同环境,只需要./install.sh便可一键配置
绿色通道(单调队列优化,dp,二分)
思路:找最小值最大首先想到二分,我们发现这个时间t对答案来说满足单调性,所以我们二分答案,check时,我们发现就是判断长度为x的区间最小值是否小于t,dp[i]表示1——i-1位置满足题意且i位置必须写题,那么可以得dp[i]=min(dp[j])+w[i]我们用单调队列维护dp[j]即可#pragma GCC optimize(2)#include <cstdio>#include <cstring>#include <algorithm>#include.
理想正方形(滑动窗口)
思路:对每一行求一下长度为k的滑动窗口的最小值和最大值然后再对列求一次,在k*k处开始遍历。#pragma GCC optimize(2)#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>#include<queue>#include<map&g.
迷宫问题(打印路径)
思路:BFS具有最短的性质那么,只需要考虑如何打印最短路,我们用个pair的二维数组存储到达当前位置的前一步是哪一步,为了方便输出,我们从n,n点出发到1,1,点#pragma GCC optimize(2)#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>#inc.
矩阵距离(多源bfs)
思路:曼哈顿距离那就上下左右四个方向走每次加1,bfs去搜,以所有的1为起点入队开始。#pragma GCC optimize(2)#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>#include<queue>#include<map>.
NC 112209 Vitya and Strange Lesson(01字典树)
题意:给你n个数的序列m个操作,每次操作给你一个数,然后让序列中所有的数异或这个数最后求当前序列的mex(最小未出现的非负值)思路:异或有结合律那么我们就把后面输入的数异或一下,然在n 个数上的字典树去找没出现的值,我们去记录一下当前树的节点,看他是不是满二叉树,如果是满的那说明在这条路径上没有未出现的数,我们就跳到另一边,然后此时当前位只能为1所以加上1<<i//#pragma GCC optimize(2)#include<bits/stdc++.h> using n.
Perfect Security(01字典树)
题目链接题意:给你两个序列A,B,求一个序列C c[i]=a[i]^b[i]你可以重新排列B序列,且要答案字典序最小。思路:对B序列建树,然后在A序列查找,为了找到数尽可能小,那么贪心的时候就是看01树上的点和有没有和当前位一样的有的话就选他,异或后对答案没影响,没有的话就只能加上当前位异或值(1<<i),还要删除字典树的节点,我们用sum[i]记录一想当前节点还有几个子节点可以走,当子节点减为0时则不能走。//#pragma GCC optimize(2)#include<bit
格子游戏(并查集裸题)
思路:在连边之前判断当前两个点是否已经在同一集合里,如果在那么说明连上会成环,我们用并查集去写,根据下图我们可以知道坐标如何变成点的编号//#pragma GCC optimize(2)#include<bits/stdc++.h> using namespace std;typedef long long ll;#define SIS std::ios::sync_with_stdio(false)#define space putchar(' ')#define ent..
香甜的黄油(最短路)
思路:最短路暴力,吧糖放到每个位置然后跑一下最短路,看从当前位置到几个有牛的位置的距离是多少记得乘牛的数量,取最小值//#pragma GCC optimize(2)#include<bits/stdc++.h> using namespace std;typedef long long ll;#define SIS std::ios::sync_with_stdio(false)#define space putchar(' ')#define enter putchar('.
昂贵的聘礼(最短路,建立超级源点)
思路:我们建立以个超级源点,源点到没个物品的价值代表直接购买,然后根据兑换方式进行建图,为了保证在等级限制内,因为我们必定要换到1号物品,所以就枚举从1号物品等级-m到1号物品的等级区间跑最短路#include<bits/stdc++.h>#define re registerusing namespace std;typedef long long ll;const double eps=1e-7;const int INF=1e9;const int N=105;int ..
新的开始(最小生成树,建立超级源点)
思路:如果去掉选择一个点建立发电站,那么答案直接就是个最小生成树,我们要在最小生成树的基础上选一个地方建立发电站,那么可以看成从一个超级源点出发到每个点的花费就是建立发电站的费用,然后算从超级源点出发的最小生成树//#pragma GCC optimize(2)#include<bits/stdc++.h> using namespace std;typedef long long ll;#define SIS std::ios::sync_with_stdio(false)#d.
受欢迎的牛(强连通分量+缩点)
思路:看有多少头牛受其它所有牛欢迎,就是看这个点能不能被其他所有点到达,那么我们求一下他的联通分量,缩点后我们可以发现当只有1个联通分量的出度为0时,那么这个联通分量里面所有点点都可以被其他所有点到达,那么数量就是这个联通分量里面点的个数,当出现1个以上的出度为0 的点,那么此时都不能到达//#pragma GCC optimize(2)#include<bits/stdc++.h> using namespace std;typedef long long ll;#define .
电路维修(0,1距离最短路)
思路:根据题意我们发现是求最短路,我们可以发现当可以直接到达的点权值为0,不能直接连接的点需要旋转才能连接的权值为1,那么我们再BFS时,看一下我们的下一跳的点,在图中的状态是什么样的,遍历顺序已经对应状态如下图,如果此时下一跳和电路的状态可以对应那么权值是0,否则权值是1,可以发现当答案处于奇数点(行+列%2=1)时是不可能到达的//#pragma GCC optimize(2)#include<bits/stdc++.h> using namespace std;typedef.
周排行