博客复更

最近在研究Linux内核相关的东西,准备写几篇文章记录一下。但是自己的博客太久没有打理了。 本来打算将博客迁移到Hugo上,但是发现评论的迁移和搜索的实现比较麻烦,因此最终还是决定继续使用WordPress。 之前WordPress最让我头疼的问题是在于代码高亮插件。在不同的代码高亮插件间切换令人崩溃。同时由于我使用的代码高亮插件在遇到<和>字符的时候会自动escape,但是在编辑器中每次打开再保存会又escape一次,不知道为什么会有这样奇怪的设定。这也就导致了我一直纠结于博客系统而就放弃了内容上的更新。 今天仔细研究了一下相关方案,发现WordPress上有一个插件可以很好地解决问题,插件名叫WP Githuber MD。可以直接在里面使用Markdown来编写,同时还自带了优化Markdown文档的种种插件,比如用于代码高亮的prism.js,以及用于数学公式的KaTex。 改了几篇文章下来,感觉比之前使用WordPress编辑器+各种插件+部分手写HTML要方便不少。最终决定采用这个方案继续写博客了。也感谢大家这么多年来对我的博客的支持,希望接下来继续生产许多有价值的内容。

HDU 6657 – Acesrc and Cube Hypernet

题意: 给一个纸条,问是否可以折成一个立方体,纸条用一个h*w的矩阵上的#来描述,h<=100,w<=100,T<=30(数据组数)。 分析: 当时多校赛场上读完题就想到了可以枚举点然后BFS填充格子,只要有一个起点能满足不重复地填充给出图形上的所有#号点,且立方体被填满,就输出yes。由于h<=100,w<=100,所以最大的正方体的边长为100/4=25,因此我们枚举点25*25,check使用25*25*6的复杂度可以完成。 不过因为后来跟榜先搞别的题去了这题就先放一边,结果我们队后来因为开车那题自闭到最后. 这题的难点在于处理BFS时转向的问题。 我们可以先建立一个三维坐标,第一维是所属的面,第二维和第三维是这个坐标在这个面中的位置。如下图所示,中间的数字是面坐标的编号。 然后对于编号1的面,向周围4个面走的时候都是直接走即可,不需要进行坐标变换。 而对于需要进行坐标变换的情况,比如从0这个面一直向上走,走到4,需要将x和y坐标对调,然后逆时针转90°,再继续填充这个格子。 对于6个面,向4个方向走只有6*4=24种情况,所以直接把这24种情况x和y和方向的变化写出来(可以用if或者switch),然后直接做就完了。 然后就直接上一段很丑的代码吧。(为什么这么丑还要写博客呢,因为这算是在多校期间补的题中AC的人最少的一道题吧) 代码: #include <bits/stdc++.h> using namespace std; int…

二维ST表学习笔记

众所周知,ST表是一种离线解决RMQ(区间最值)问题的方法。 可以在O(n \log {n} ) 的时间内进行预处理,然后在O(1)时间内查询到结果。 复习一维 我们先来复习一下,一维st表的预处理和查询过程。 对于预处理,我们先定义一个名为st的二维数组,其中st[i][j]表示以i为起点,从起点开始(含起点)往后2^j个元素的最值。 满足i+2^j-1不越界 因为2^0 = 1 ,因此st[i][0]=a[i] 然后我们用2个for循环去打表就行了 接着是查询,这里我画了个图来解释。 其中橙色的线表示两个区间。 一维代码…

CQU选课小技巧

很多CQU的学生都遇到一个问题,选课的时候明明选完了,但是在提交上去的最后一步却遇到了Service Unavailable的情况,导致选课全部作废,需要重新选。 其实,借助Chrome浏览器和Fiddler可以很好地帮助我们解决这个问题。   问题根源:抢课系统在遇到提交失败的时候会丢失我们所选课的列表 解决方案:使用抓包工具,如果提交选课结果没有成功,就将提交上去出错的请求重放一遍   这里就不继续阐述诸如“看见加载不要继续点刷新”一类大家都知道的小技巧了   选课之前,你需要先安装好Chrome和Fiddler,Chrome建议安装SwitchyOmega插件,并按照这样设置。 点击上面菜单的黑色圆圈 然后点击选项 之后点击“新建情景模式” 然后按照下图设置代理协议HTTP,代理地址127.0.0.1,代理端口8888 (这个是Fiddler的默认配置) 之后应用选项。 然后打开fiddler,点击Tools,Options,按照这样设置 去掉Capture…

把树莓派作为Wi-Fi路由器(IPv6 passthrough、5GHz 11ac)

最近刚入手了Raspberry Pi 3B+. 打算当做一个高可玩性的路由器用。 毕竟这代硬件配备了千兆以太网(受限于USB总线带宽只能跑到250Mbps左右),和11ac Wi-Fi(受限于SDIO总线只能跑到110Mbps左右)。 参考资料:https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md 我准备实现以下几个功能: Wi-Fi工作在11ac模式(如果你想使用11n模式,建议在hostapd配置部分参考这里),达到433Mbps的Link Speed Wi-Fi共享以太网口的网络,IPv4使用NAT模式 IPv6使用穿透模式(可适用于几乎所有学校和家庭的IPv6环境,甚至你的手机开启个人热点后通过USB连接在Pi上也可以用这种方式使后端设备得到IPv6地址) 接下来开始操作: 0x00. 切换到root用户 sudo su 0x01….

在macOS下编写C++程序

还是由于最近身边许多同学换到了macOS,他们多数曾经是OIer或者大学打算读计算机,跑来问我如何在macOS下编写C++程序,这里介绍一下我的方法。 (如果你已经熟悉在Linux或是WSL下写程序,那这篇真的没啥好看的) 首先,你需要安装编译器。 由于Xcode会自带一个clang LLVM编译器(与gcc不同,如果写了UB可能会和gcc编译的程序运行结果不同),你只需要去App Store安装Xcode并运行一次即可。 然后,你需要安装一个代码编辑器。 推荐2个代码编辑器: Sublime Text Visual Studio Code 然后,准备一个好用的终端环境 推荐参考这篇文章:https://blog.cyyself.name/2018/07/macos/ 你可以选择先处理一下bits/stdc++.h问题 参考这里:https://github.com/tekfyl/bits-stdc-.h-for-mac 执行以下shell代码:…

macOS终端调教历程

工欲善其事,必先利其器。 最近,我的许多朋友换了电脑,其中有不少换了Mac。他们也常常来问我macOS下如何编译程序,VS Code与VS区别等等。其中他们多数是准备在macOS上学习C++、Python等语言。 考虑到身边许多朋友需要这个,而我自己的电脑也需要整理一下,所以今天把电脑数据备份了下然后重装了系统,希望能把我自己配置macOS的历程分享给大家,为大家提供一些帮助。 在做如下操作前,请先到App Store安装好Xcode。 由于Xcode下载需要等待较长时间,在此之前,你可以先了解一下基本的Unix命令。如cd、ls、echo、cat等。 顺带了解一下nano编辑器的使用。 首先,一个好用的软件包管理器有助于环境的配置。 经常使用Linux发行版的朋友肯定对包管理器不陌生。可以用它来管理安装的软件包,并实现软件批量升级。同时还可以一行命令搞定软件安装。比如Debian、Ubuntu使用的apt,CentOS、Fedora使用的yum。 这里推荐一个Mac上的包管理器,Homebrew。 我们只要打开浏览器,将中间的命令一整行复制下来,到终端中粘贴,然后回车。 在安装过程中,你可能遇到需要输入密码的时候。需要提醒大家的是,这里输入密码是看不到输入密码的提示的,许多初学者的感觉是密码没有输进去。不过不要紧,只要在键盘打完当前用户的密码,然后按回车即可。   第二,一个好用的Shell有助于效率的提升 在此安利一下zsh,一个比自带的bash好用得多的Shell,还有各种插件可以添加。 待homebrew安装完后,我们可以来安装一下zsh。 在终端中输入…

QQ坦白说解密教程 for iOS

最近QQ坦白说功能在我的好友之间十分火热,也因此催生了许多人想要查看坦白说发送者的欲望,考虑到网上没有太多的坦白说解密教程,这里打算自己写一个。 首先,你需要准备以下工具 一台iPhone 一台运行着Windows的电脑 在电脑上安装并运行fiddler抓包工具 iPhone和电脑在同一个Wi-Fi下,且可以内网互通(几乎所有的家庭网络都可以,但大部分学校等场所的Wi-Fi会进行客户端隔离,遇到这种情况可以请别人使用手机开热点) 在电脑上运行Fiddler,点击Tools菜单中的Options 进入HTTPS选项卡,左边按照如图设置,点击右边的Actions,然后点击Export Root Certificate to Desktop 再进入Connections选项卡,按照如图设置,特别是要去掉Act as system proxy on startup和勾上Allow…

我在OI中辗转的这千百天

 今天是2017年12月16日,距离NOIP2017结束已经过去一个多月了。我想写一篇文章来留念一下我在OI中辗转的这千百天。 0x01 初识OI 我最初知道NOI系列赛事是在初一的时候。 小学到初中有在跟着思明区青少年宫的老师学电脑机器人,当时在班上有个比我大岁的朋友,他刚上高中,知道了有NOIP这个比赛,后来他拉着我学Pascal入坑了。 那段时间他带我入门了Pascal,水平大概达到了会写校门外的树的程度,后来由于我的时间关系和他的时间关系没有继续往下学。当时由于周末还拿出一天上电脑机器人的课,所以也没有太多的闲暇时间。 后来到了NOIP报名的时候,我问了我们班主任能不能我们学校找个信息老师挂名去参加NOIP,之后便没有下文了。 其实现在想来,当时的水平甚至连通过普及组初赛都不够的。那个时候我的水平仅仅只是会用Pascal写入门难度的程序。并且那个时候的我也不了解算法和数据结构,对于计算机的学习处在一个以自己玩为住的状态。当时搞机器人,搞单片机。搞Web开发,搞C#、VB、易语言写点小程序。记得小学六年级的时候写了个控制飞机躲避障碍的游戏和弹球游戏就觉得自己很厉害了,现在自己看来这些东西真是小儿科。正如我当时写的弹球游戏需要考虑的圆以一定的速度和角度与直线碰撞的问题,我根本不会判,当时易语言有个组件叫画板,基于DirectPlay,判断物体碰撞只要设置速度和角度物体就会在屏幕上移动,碰撞的时候会调用一个事件,根本不需要像我写OI的计算几何题目一样去考虑各种东西,所以我当时根本没有想过要学习算法和数据结构,不明白它甚至可以帮忙升学,初中阶段也就把这个事情搁置了。 0x02 高一的NOIP2015 由于一直对计算机感兴趣。初中的时候希望中考能考上一个OI强校成为了一个目标。然而不幸的是,中考的时候考的很差,高中来到了厦门集美中学。 高中的第一节信息课,信息老师就在问我们全班同学有没有人知道NOIP这个比赛,我记得当时全班就我一个人举了手,然后和老师交换了联系方式,周日开始在学校上课。 当时我们学校OI班上大概有20个人,招人方式几乎只是问问谁感兴趣谁进来。其中还有个高二的学长和高二的学姐都是之前电脑制作拿过奖,就被我们老师拉去参加NOIP了。显然这和OI不是一个知识体系,毕竟我们也是老师带的第一届OIer。但不幸的是,初赛结束之后就只剩4个人参加提高组复赛了。而初中普及组的初赛通过人数还是挺多的。 后来自然就到NOIP2015了,然而当时什么算法都不会,只知道C语言的基本使用,也不会STL,甚至连搜索都不太熟练。最后Day 1T1做了出来,剩下的题目要么打个搜索,要么打个特解,要么打个输出random,最后得分150。当年恰逢CCF取消省三等奖,福建省计算机学会和省教育厅自己发省三等奖,当然这个奖自然是毫无卵用除了免信息会考。对我而言也是一个信心上的鼓励。 并且我也听说了福师大附中的hzwer,高一拿省三,高二省一,省选R2翻盘最后进队,最后NOI Ag…