图论基础
图的定义
点用边连起来就叫做图。在严格意义上,图是一种数据结构,定义为:graph=(V,E)graph=(V,E)graph=(V,E)。
其中,V={p∣p=(a,b)}V=\{p|p=(a,b)\}V={p∣p=(a,b)}是一个非空有限集合,代表顶点(结点),EEE代表边的集合。
图的相关概念
有向图:图的边有方向,只能按箭头方向从一点到另一点。
无向图:图的边没有方向,可以双向。
结点的度:无向图中与结点相连的边的数目,称为结点的度。
结点的入度:在有向图中,以这个结点为终点的有向边的数目。
结点的出度:在有向图中,以这个结点为起点的有向边的数目。
注:有向图中所有顶点的入度之和等于所有顶点的出度之和。
权值:边的“费用”,可以形象地理解为边的长度。
连通:如果图中结点U,V之间存在一条从U通过若干条边、点到达V的通路,则称U、V 是连通的。如果图中任意两点都是连通的,那么图被称作连通图。
回路:起点和终点相同的路径,称为回路,或"环"。
完全图:一个nnn阶的完全无向图含有$\frac{n(n-1)}{2} 条边;一个条边;一个条边;一个n阶 ...
修改主题并美化我的博客
前言
自从我使用Hexo起,就一直坚持使用Butterfly主题。这个主题实在是太对我审美啦,有着恰到好处的花哨,但也没有到华而不实的程度。同时网上相关的资源教程也有很多,也就方便了后续对主题的魔改美化。
主题配置
启用搜索功能
Butterfly 可以在配置中开启搜索功能,详见文档:Butterfly 主题配置
我这里开启的是Local Search,因为配置稍微简单一点。也没有啥依赖。
注意:请务必在加密文章的Front-matter部分加上indexing: false,否则访问者可以通过搜索其中文本的方式来访问你的明文
增加 live2d 看板娘
在inject处插入相应 HTML 代码即可。效果如左下角(移动端默认不开启)
启用 pangu
如果你有在中英文字符之间添加空格的强迫症的话,可以开启此功能,记得把范围设置为post。
安装插件
安装插件是最简便的优化方式。安装方式也很简单:
1npm install hexo-plugin-name --save
其中hexo-plugin-name为你想要安装的插件名。部分插件可能还需要手动去根目录下的_config.yml文件 ...
AHU自动化抢课脚本
1d39586f0f9162b62d0ace18daef8d2f576693903071e643d11d95d89843b9ba85cc331add496dfaaac648d611fe2e0c50592e74c1cd34576951d1259ec7c8f356a75966aef63879049b5b65b132966227aa433b8a2680e6fba27844b6fdecd644b01f63a562c174e4477fbae4f61937112fda64b0726a26010baa09f591726e13aca6e999e841c95a5691cec4456b234454ea8a76926e5a0a7f135e2475d7a2ef014d82cc1d48e39588192336f8d6d3e938673edd7facae6e90fcfc2ed75ab809aa7b1e4c986472129e1863df27c8c7c53375b230decbb7ca0951773afdf6e7e4c4d6d8dc239d1e13e63d7d79cd3a6a312cbe92246e710b1 ...
为网站配置免费的SSL证书
前言
SSL 证书(Secure Socket Layer)用来提供对用户和服务器的认证,对传送的数据进行加密和隐藏,确保数据在传送中不被改变,为网站配置 SSL 证书后,就可以以 https 方式访问网站了。
在很多云厂商处申请 SSL 证书是收费的。为了省钱,我们可以申请一个免费的 SSL 证书。例如从Let’s Encrypt这里,就能申请到免费的 SSL 证书。Let’s Encrypt 是一个提供 SSL/TLS 证书的非营利证书颁发机构,只需简单几步便可完成 SSL 证书的申请。
申请证书
为了省事,我直接用自己的云服务器厂商代申请的方式搞了个 SSL 证书。过程很简单,到后台 DNS 解析页面添加一条TXT类型的记录即可,主机名和记录值和他提供的一致就行。等解析生效后再验证就能获得证书了。也可以根据官网文档进行申请,这里不再赘述。
在获得证书后,我们需要下载给出的私钥文件(.key)和证书文件(.pem),并上传到服务器上。
配置证书
假设你已经将私钥文件和证书文件下载到了本地,可以使用scp上传这两个文件:
1scp yoursite.key yoursite.pem ...
博客迁移
前言
自从学算法起,我就有了写博客的习惯。写博客既可以锻炼自己的网站建设能力——如果是自行部署,可能还会涉及一些运维什么的。同时,也能很好地记录自己的学习历程,向其他人分享学习经验和感悟。从 2021 起到今天,我陆陆续续也有了几十篇文章,发表在各个平台。它们太过于分散,因此,我有必要把它们整理一下并迁移到这个全新的博客。
然而,并不是每一篇文章都是值得迁移的。有的可能是缺少注释的算法题解,有的可能是简单且在互联网上查重率高的工具教程,还有的可能只是敷衍性的吐槽灌水。虽然博客确实是用来记录这些点滴的,但我还是想忽略过去的琐事,只记录未来。毕竟本站是面向公网开放的,谁想让别人看自己的黑历史呢。故我打算只迁移过去写的技术类文章,一些鸡毛蒜皮的 posts 就直接忽略不计了。
在下定决心整理文章并迁移到新博客的时候,我也打算在后续几年里做到频繁更新,争取每周一更。我要用这个小站来记录自己的成长。什么类型的文章可能都有,也可能会有一些灌水。毕竟记录的意义上来说,博客是写给自己的。然后才是向他人分享经验。简单、技术力低的文章或与技术无关的文章为何不能发表出来呢?发表权明明就在自己手里,无需为了博 ...
AHUCTF2024 WP
前言
Upd: 为了供25届新生参考,补充了部分内容。欢迎学弟学妹们加入实验室OvO
本WP的Misc方向可能有点乱,至于OSINT太简单就不放了
我的分数一直在被肘(从8k甚至7k一路被肘到6k,因为今年开始是非线性扣分)
最终排行
也是结束了QAQ,对我而言可惜的是没能ak PWN方向。easy_password的gift()函数不会触发,只知道后面应该输入-1
Crypto
移位base
思路
名字叫移位base,用它给出的自定义字典即可
解决
编码为:
1Y2Cbj2owipIwjfIoipIcjNCbSEkcjterPNMrktCbkOCfGZIuFD1sPOIfi2Y1F2CrPNMbGJIdkDQzhEUvGDXnFurnB2ooitkvFDrnADsvFEsckZIKi21dFD55SJI0hNBnj3Ycjurni2FnkNosPNkoiDBnkNMyGETnjNeoF2BnhD4nFZItFD50FEU5POkcjterPNUoiNesGJHpCNs2FEXpSJIdiNM5GEQgPOkwiNdnjNeolZIoPN15j3YsjtsckETnF2oojt ...
测试页面
这里是测试页面,用于测试各功能是否正常
中文测试
我能吞下玻璃而不伤身体
KaTex 测试
h=12gt2h=\frac{1}{2}gt^2
h=21gt2
(a−b)2⩾0,a2−2ab+b2⩾0,a2+b2⩾2ab(a-b)^2\geqslant0,
a^2-2ab+b^2\geqslant0,
a^2+b^2\geqslant2ab
(a−b)2⩾0,a2−2ab+b2⩾0,a2+b2⩾2ab
hexo-spoiler 测试
你看不见我
标题测试
一级
二级
三级
四级
五级
分隔线测试
$$End$$
C++常用模板大全
仅自用
高精度计算
高精度加法
12345678910111213string add(string a,string b)//仅限两个非负整数相加{ string ans; int na[L]={0},nb[L]={0}; int la=a.size(),lb=b.size(); for(int i=0;i<la;i++) na[la-1-i]=a[i]-'0'; for(int i=0;i<lb;i++) nb[lb-1-i]=b[i]-'0'; int lmax=la>lb?la:lb; for(int i=0;i<lmax;i++) na[i]+=nb[i],na[i+1]+=na[i]/10,na[i]%=10; if(na[lmax]) lmax++; for(int i=lmax-1;i>=0;i--) ans+=na[i]+'0'; return ans;}
高 ...
C++文件读写操作及加速
0x01-文件读写方法
使用C语言中的freopen()函数进行打开文件并重定向输入输出。示例如下:
12345678910#include<iostream>;using namespace std;int main(){ freopen("testfile.txt","w",stdout); for(int i=0;i<10;i++) cout<<i<<" "; return 0;}
这样,你就可以使用普通的cin,cout来进行文件的输入输出了。当然,也可以使用scanf()、printf()等输入输出函数。
1234567891011#include<iostream>;#include<cstdio>;using namespace std;int main(){ freopen("testfile.txt","w",stdout); fo ...
《算法导论》(Introduction to Algorithm)读书笔记
声明
本笔记全部内容由Himekawa编写,无AI辅助生成。转载内容请标明出处。
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
规范
本笔记需要的所有代码均用C++代码实现。
这是一个长期的项目,预计要一年时间(已经是高中开的坑了)。
本笔记的顺序、内容不会和IA*****保持一致。IA中的思考题部分很可能不会发布。且不保证正确。
本页面的所有笔记均包括以下内容:
正文
数据
代码
*"IA"代指《算法导论》(也可能代指IA?)
目录
第零部分-必需知识
C0.数学知识
求和
离散数学
计数与概率
矩阵
第一部分-基础知识
C1.算法基础
排序算法与算法分析
分治法及其分析
C2.函数的增长
渐进记号
标准记号与常用函数
C3.分治策略
最大子数组问题
矩阵乘法的Strassen算法
求解递归式
C4.概率分析及随机算法
雇用问题
指示器随机变量
随机算法
概率分析的延 ...