Git 学习笔记(零) - 前言
前言
Git 是目前主流的代码管理工具,可以轻松实现代码版本回溯,代码分支管理等等。同时,Git 几乎成为使用 Github、Gitee 的必备工具。本文将分享简单的 Git 学习笔记,笔记不是很详细,需要有较多类似工具使用经验。
关于 Git 学习,Git教程 - 廖雪峰的官方网站 是很好的入门指南,我也是跟着这篇博客学习的。
前置知识
Git 作为命令行工具,你至少会用 命令行 吧。
目录
如果要快速入门使用 Github,在第六篇文章。
Git 学习笔记(一) - 安装配置
Git 学习笔记(二) - 基础操作
Git 学习笔记(三) - 分支管理
Git 学习笔记(四) - 标签管理
Git 学习笔记(五) - 储存库
Git 学习笔记(六) - 远程仓库
Git 学习笔记(七) - SSH 连接与 GPG 认证
ZSTU3192 仲夏之夜 (Summer) - 最小生成树问题解析
建站提交历史文章,原文写作时间 2022 年 11 月 12 日。
前往 算竞题解 分类 || 前往 算竞模板 分类
放在前面
还是那句话,因为找不到此题相关的题解,所以凉皮写了这篇文章。作为算法初学者,这道题卡了凉皮很久,现在凉皮AC了这道题,所以兴奋的地和大家分享这篇文章。本文如果有些术语使用不当或者其他错误欢迎在评论区回复。
题目描述
“一闪一闪亮晶晶,满天都是小星星”,夏天的夜晚,满天繁星。Pty和xx躺在软绵绵的草坪上,仰望这美丽的星空,让人引起无限的遐想!(富有意境的废话)
Pty开始展开他的想象力:在这片绚丽的星空图上,有n颗星星,从1到n进行编号。现在有n-1条双向星际航道把这n颗星星给连接了起来。每条星际航道都有一个为过路费(正整数),设这n-1条航道的过路费之和是V。Pty给每两个星星之间都连一条星际航道,并且赋予了它们相应的过路费,要求在连完之后:
对于任意一种能把n颗星星连接起来的m条航道(这m条航道与原始航道不完全相同),满足这m条航道的过路费之和>V。
请你告诉Pty:能满足他条件的方案里:图中所有的星际航道过路费之和最小是多少?
Pty将告诉你 ...
python 变量命名规则与规范(约定)
建站提交历史文章,原文写作时间 2022 年 7 月 16 日。
引子
前些日子,大大的一位友友问了我一个问题,表示了对命名规范的不解。确实如此关于命名规范有一套相对严谨而复杂的理论,大大在此特就python的变量(以及函数和对象)命名规则与规范进行讲述。
规则
规则很简单,我在此也就写在前面,并且一笔带过,相信在看的朋友也不会有疑问。
python变量必须由数字、字母、下划线(0-9a-zA-Z_)组成,严格区分大小写。
规范
性质与意义
在此为了分清规则与规范的区别,特别需要指出规则的性质。规则简洁明了,命名正确与否由编译器检查,也就是说,如果命名不符合规则,代码是跑不起来的。规则则不同,我将它概括为“程序员的自我规范”,它属于一种自我意识或者说自觉,不符合规范的程序运行起来依然没有任何问题。
那么我们就需要提到命名规范的意义了。命名规范有两方面的意义:一、使变量意义一目了然;二、表面变量的用途。这些会在后面提到;三、程序员之间的交流,良好的代码习惯有利于团队合作。
声明
命名规范实际并不统一,有时也不必过度纠结规范,保留其本质的用途即可,在一些细节上存在偏差,如果作者有什么遗漏 ...
python 参数传递,如何让可变参数当作不可变参数传递
建站提交历史文章,原文写作时间 2022 年 1 月 30 日。
引子
众所周知,python中参数传递方式有很多,这些在其他文章中都有所详细陈述,在此不做赘述。(如果你需要了解python参数传递的基本知识,请绕路,相关文章在CSDN很丰富。)但是小编遇到一个问题便是可变参数的传递无法被当作不可变参数处理(python3.8),而我们常常需要这么做。这个问题的解决方案在全站没有找到解决方案,小编特写此文为有需要的人士介绍。
错误示例
123456789101112131415def demo(x): _x = x _x['python'] = 'v3.8' print('_x =', _x)x = {'visual basic': 'v6.0'} # 字典是可变参数demo(x)print('x =', x)"""输出结果:_x = {'visual basic': ...
pynput 键盘鼠标事件抑制(拦截输出)
建站提交历史文章,原文写作时间 2021 年 8 月 15 日。
pynput 键盘鼠标事件抑制
前言
最近想用pynput做一个键盘映射,但是遇到的了一些问题,键盘映射有时需要抑制原输出。本人在CSDN找了很久,但是发现没有相关的文章。在查找了官方文档,并做了一些测试后,想写一篇文章来扩充一下。
在这里我提供了两种方案,各有优劣。相比较而言,方法二方便、稳定(推荐 );方法一更加灵活,在特殊场合适用。
方案一
pynput的官方文档中有简单提到,Listener类的参数中有一项suppress(抑制)。
“suppress(逻辑型) - 是否抑制事件,将此参数设置成True,就可以阻止事件传递到你的操作系统。”
也就是说,pynput提供的抑制必须在启动监听的时候设置,这里我们以键盘事件为例,因为往往它是我们要拦截的对象,当然鼠标事件的抑制用法也是完全相同的。
12345678910111213from pynput import keyboarddef on_press(key): passdef on_release(key): passwith keyboard ...
竞赛图与哈密顿图 - Cheeeeen the Cute Cat - 牛客多校Day5
Cheeeeen the Cute Cat
前往 算竞题解 分类 || 前往 算竞模板 分类
原题链接
C-Cheeeeen the Cute Cat 2023牛客暑期多校训练营5
简明题意
给定一个二分图的 010101 邻接矩阵,表示一个二分图,如矩阵中 ai,ja_{i,j}ai,j 为 111 表示二分图存在一条无向边 (i,n+j)(i,n+j)(i,n+j)。题目保证二分图共有 2n2n2n 个点,n(n−1)2\frac{n(n-1)}{2}2n(n−1) 条边,不存在边 (i,n+i)(i,n+i)(i,n+i),不同时存在边 (i,n+j)(i,n+j)(i,n+j) 和 (j,n+i)(j,n+i)(j,n+i)。现求二分图最大匹配,n≤3000n \le 3000n≤3000。
解题思路
本题需要分为两步,因为题目隐藏了其模型。
转化模型
这是一幅稠密图,如果直接跑二分图匹配时间复杂度是 O(n3)O(n^3)O(n3) (匈牙利算法) 或 O(n2.5)O(n^{2.5})O(n2.5) (dinic 算法),实际题目模型与二分图没有关系。
我们可以将二分 ...
构造 - Merge the squares! - 牛客多校Day4
Merge the squares!
前往 算竞题解 分类 || 前往 算竞模板 分类
原题链接
H-Merge the squares! 2023牛客暑期多校训练营4
简明题意
给定一个 n×nn\times nn×n 的网格,初始状态每个网格就是一个正方形。之后进行不限次正方形合并操作,使得最后将所有网格合成为一个大正方形。要求每次框定一个正方形区域,要求正方形区域内都是完整的正方形,不能有正方形一半在区域内,一半在区域外,合并后该区域变成一个正方形。每次合并至少合并 222 个正方形,至多合并 505050 个正方形。
其中 n≤1000n \le 1000n≤1000 。首先输出 mmm 表示你将进行多少次操作,之后 mmm 行每行三个数字 (x,y,k)(x,y,k)(x,y,k) 表示框定以 (x,y)(x,y)(x,y) 为起点的大小为 kkk 的正方形。
解题思路
每次合并必须为一个正方形区域且所有子形状都必须是正方形,这明确了我们要解决的问题是:将任意大小的正方形( n≤1000n \le 1000n≤1000 )分割成不超过 505050 个正方形。这题最难的实际 ...
构造 - Codeforces Round 889 (Div. 2) - Dual (Easy & Hard Version)
Dual (Easy & Hard Version)
前往 算竞题解 分类 || 前往 算竞模板 分类
原题链接
C2-Dual (Hard Version) Codeforces Round 889 (Div. 2)
最喜欢这种什么算法都没有的构造题。
简明题意
给定 nnn 个数 aia_iai,你可以进行不超过 kkk 次操作,使得最终 aaa 是非降序的。每次操作任选两个数使得 ai+=aja_i += a_jai+=aj。
Easy Version:1≤n≤201 \le n \le 201≤n≤20,−20≤ai≤20-20 \le a_i \le 20−20≤ai≤20,k=50k = 50k=50。
Hard Version:1≤n≤201 \le n \le 201≤n≤20,−20≤ai≤20-20 \le a_i \le 20−20≤ai≤20,k=31k = 31k=31。
解题思路
Easy Version 的解法很多就不介绍了,我直接出的 Hard Version 的思路。
首先我们考虑使用 前缀和 操作,因为不使用前缀和会发现问题变 ...
Markdown 学习笔记(三) - Mermaid 绘图
回到文章目录
Mermaid是一个开源项目,目前已经包含了众多种类的绘图。Markdown 将其引入到代码块中,你可以使用它在代码块中进行简单的绘图。Mermaid 目前仅被少数编辑器支持,你可能需要在编辑器设置中手动打开相关设置,其中包括 Typora。
本文只介绍其中的 flowchart、gantt、pie 。如果还有其他需要请访问 Mermaid 官网 获取更加详细的指南。
不同版本Mermaid略有差异,这里以V8.8为例。
花絮 - 不要高估 Mermaid有一段时间,我实际上非常痴迷于 Mermaid 的强大,并不断地向周围的人分享它。实际上,Mermaid 确实有其便捷之处,但是绝不能说其强大,当你需要画一幅略大的图时,Mermaid 就无能为力。
比如有一次我试图帮 ACMer 队友画一幅简单的二分图,用来理解匈牙利算法。但 Mermaid 始终无法将二分图的两个点集对齐,二分图长得非常难看。
比如上学期的 C++ 课设上,课设报告需要提交流程图和类图,我试图用 Mermaid 完成类图但画出的图太过凌乱,试图画出流程图但是代码太长把自己都看晕了。
Mermaid ...
Markdown 学习笔记(二) - LATEX 公式
回到文章目录
LATEX 源于另一种文本语言,Markdown 引入了对于 LATEX 数学公式的支持,现在编辑器基本都不同程度支持 LATEX 公式,可能需要在编辑器中手动打开相关设置。需要特别注意的是,LATEX 是一门繁杂的语言,因此 Markdown 仅支持了常用的 LATEX 符号,但不同编辑器所支持的 LATEX 符号集也略有差异。
本文中一些 LATEX 语法不被当前平台支持,可以自行粘贴到 Typora 查看。
行公式 & 块公式
行公式
代码预览1$ax^2+bx+c=0$ax2+bx+c=0ax^2+bx+c=0ax2+bx+c=0
块公式
代码预览123$$ax^2+bx+c=0$$ax2+bx+c=0ax^2+bx+c=0
ax2+bx+c=0
常用符号
特殊符号
123456\ // 转义符~ // 空格符\\ // 换行符{} // 结合符& // 制表符% // 批注符
标注
文本
在Markdown 文本中,空格等符号可以被正常使用。
代码预览1234$$Markdown~常规 ...