【洛谷 P1141】01迷宫
这道题可以用DFS,也可以用BFS,这里我采用了DFS(因为懒)。
题目大意
给定一个只含000和111、n×nn \times nn×n的迷宫:
12345n=41 0 0 11 1 0 00 1 1 01 0 0 1
从每一个为000的位置,可以走到相邻的111处;从每一个为111的位置,可以走到相邻的000处。即上一个走过来的格子不能与现在的格子相同。
接下来有mmm次查询,每次查询给定一个x,yx,yx,y,表示迷宫里第xxx行第yyy列的格子,询问从这里开始最多能走到几个格子(包括自身)。
做法
普通DFS
根据题意,很容易得到第一版的DFS代码:
123456789101112131415161718192021222324252627282930#include<bits/stdc++.h>using namespace std;bool Map[1005][1005];int mapBooker[1005][1005];int n,m;int search(int x,int y,bool last){ /*判定是否越界、已经搜索过* ...
【小报】CCF报名官网出现严重Bug,多地OIer可随意发布新闻
今日,CCF报名官网出现严重Bug,多地的OIer可在报名官网的新闻栏目随意发布新闻(博主身处GD,目前只剩这条了):
Tips:随意发布公告可能会被禁赛
一条不知道是否官方的“新闻”指路:http://cspsj.noi.cn/page/index/noiNews.php?id=103
免责申明
由于此博文导致的无法删除新闻、各类作死博主不承担任何责任,请各位姥爷自行衡量事情风险!
Bug情况
目前,所有登录后的用户均可以在此处随意编辑公告;公告保存后,登录账户所在省的全部用户(暂定)均可查看,但可以通过枚举http://cspsj.noi.cn/page/index/noiNews.php?id=后面的id进行查看(Example:http://cspsj.noi.cn/page/index/noiNews.php?id=139、http://cspsj.noi.cn/page/index/noiNews.php?id=103)。
此Bug发现后,一时间,各省的新闻栏如同垃圾场,涌现了一堆无意义新闻(下列图片来源于网络):
这里博主再次提示,请勿以身试法,防止禁 ...
【奇淫技巧】 在中国大陆内更快的下载VS Code安装包
今天重装了VS Code(别问我为啥),但速度……呵呵……
操作过程
首先,像平常一样,点击下载VS Code。
开始下载以后,你的浏览器会自动创建一个下载任务,但速度可与X度网盘比拟:
这时,右键下载任务(此处使用Microsoft Edge),复制下载链接:
此时,你的剪贴板里就会有一串这样的网址:
1https://az764295.vo.msecnd.net/stable/ee8c7def80afc00dd6e593ef12f37756d8f504ea/VSCodeUserSetup-x64-1.61.0.exe
现在,将网址里的az764295.vo.msecnd.net替换为vscode.cdn.azure.cn,变成这样:
1https://vscode.cdn.azure.cn/stable/ee8c7def80afc00dd6e593ef12f37756d8f504ea/VSCodeUserSetup-x64-1.61.0.exe
然后就可以直接下载了,速度++!
【USACO19FEB Bronze】Measuring Traffic
USACOの模拟小题。
题目详情
原题链接(英文题面):http://www.usaco.org/index.php?page=viewproblem2&cpid=917
中文翻译:
Farmer John的农场边上的高速公路最近出现了引人注目的流量上升,或者至少Farmer John看起来是这样的。为了证实这件事,他打算用一组传感器测量公路上的车流量,每个传感器被用来测量一小段路面上的车流量的数值。
不幸的是,某一天经过牛棚的时候,Farmer John被绊倒了,装有传感器的盒子掉进了一个巨大的奶缸,之后它们就不能正常工作了。比起之前可以产生一个精确的车流量读数,现在每个传感器只能输出一个可能结果的范围。例如,一个传感器可能会给出范围 [7,13][7,13][7,13] ,表示在这段路面上的车流量不小于 777 ,并且不大于 131313 。
高速公路经过农场的这一段长 NNN 英里,车辆仅从一个方向通过公路,从第1英里驶向第 NNN 英里。Farmer John想要安装N个传感器——每一个监测高速公路上1英里长的路段。在其中某些路段上,有能够使得车辆进入高速公路的上匝 ...
【HDU 1702】ACboy needs your help again!
一道简单数据结构题。
题目大意
模拟队列和栈,其中队列是FIFO,栈是FILO。
输入时有多个测试用例。
做法
显而易见,当需要模拟栈的时候就用STL的stack处理,模拟队列的时候使用queue。
但要注意的是测试用例可能会出现队列或栈已经空了,但仍要求出队/栈的情况,所以出队/栈时要先判空。
代码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include<bits/stdc++.h>using namespace std;int main(){ std::ios::sync_with_stdio(false); cin.tie(0); int task; cin>>task; for(int i=1;i<=task;i++){ int n; string type; cin>>n>>type; ...
【Hexo】博客数学公式解决方案,亲测有效
自从打开了Pjax后,我的博客的LaTeX加载就非常闹心……
原因
我的博客一开始使用的是MathJax,一开始还行,后来为了搞音乐播放器,开启了Pjax,噩梦的开始……
Pjax动态加载会导致部分JavaScript文件无法自动运行,这很常见……像MathJax这类的需要在页面打开后再渲染的,自然属于这一类。
解决方法
打开主题的配置文件,找到有关于数学公式的配置(这里使用的是NexT主题):
将其修改,关闭所有选项:
12345678910111213141516math: # Default (true) will load mathjax / katex script on demand. # That is it only render those page which has `mathjax: true` in Front-matter. # If you set it to false, it will load mathjax / katex srcipt EVERY PAGE. per_page: false # hexo-renderer-pa ...
CSP2021 游记
又到了一年一度的CSP……
初赛
Day -2
早上在学校颓whk,像我们学校怎么可能会搞集训呢……/kk
回家看了会算法书,然后去验核酸,准备考试…… (口区)
Day -1
早上继续颓whk……感谢各位老师送的作业(
今天晚上开始放中秋假,在洛谷有题上康题目……发现自己还是不太熟悉那些阅读程序题和填代码题,瞬间慌了……
Day 1
上一年报了rm只拿了个复赛2=,还是不敢上tg……早上收拾下东西,最后再看一下往年题,搜一下易考的知识点,蹲tg的大佬透露今早题目,据说手算base64?
下午正式开考,今年的题目除了手算base64真不会外,多数都眼瞎了……
这一题没考虑好,忘记满二叉树也是完全二叉树的一种……
这一题也脑残了,忘记看是最少的比较次数,从第二个开始遍历,那么最多只要比较 N−1N - 1N−1 次就够了,代码如下:
1234567891011121314#include<bits/stdc++.h>using namespace std;int arr[1008616];int main(){ int n; cin&g ...
【Hexo】弹出欢迎弹窗
写这篇博客的缘故是因为看到cnblogs上的live2d模型可以自动欢迎,但是自己又不会魔改Hexo的live2d,就想到了以弹窗的方式来欢迎。
Tips:本文基于Hexo+NexT主题,且开启Pjax局部刷新技术,其他主题的修改可能会有所不同,请自行了解文件对应位置
最终的实现效果如下:
选择一个好看的弹窗
首先,你既然要弹窗,就要好看,而不是JavaScript里的alert()函数,在洛谷上做题的时候,看到“提交成功”的弹窗还比较好看,就查找了一下来源(详情),然后选定了这个,感觉还不错。
获取JavaScript和CSS文件
我们需要将sweetalert.js和sweetalert.css放到自己博客下,防止CDN炸裂导致的错误:
新建JavaScript文件
在博客根目录往下找到\themes\next\source\js文件夹,新建sweetalert.js,文件内容请看这里,觉得复制麻烦的可以直接按Crtl+S进行保存。
新建CSS文件
在博客根目录往下找到\themes\next\source\css文件夹,新建sweetalert.css,文件内容 ...
【被墙检测】IT狗被墙检测API调用
最近有一个检测网站是否被墙的需求,找了几个网站,发现IT狗的API比较方便。
API详情
我们先看看IT狗的API的调用方式:
获取页面
1234URL:https://www.itdog.cn/firewall/[domain]请求方式:POST请求主体:more=no&button_click=yes返回:text/html
此处的[domain]即要检测的域名(一级域名),POST请求的主体无需变动。
这个API会返回一段HTML,即在浏览器打开时的页面。
防火墙检测
1234URL:https://www.itdog.cn/public/ajax.aspx?type=firewall请求方式:POST请求主体:host=[domain]&token=[token]返回:text/html(但是格式为JSON)
此处的[domain]即要检测的域名(一级域名),[token]的获取稍后会提到。
若请求成功,其返回内容如下:
12345{ "type":"success",//返回状态 " ...
博客服务器切换至Cloudflare Pages
UPD:部署已切换完毕,网站已恢复正常。
由于Github Pages的不稳定,博客部署将会切换至Cloudflare Pages。
在切换部署中途可能会出现网络波动的问题,不便之处,敬请原谅!
如何获取洛谷的CSRF Token
在向洛谷的API发起POST请求的时候,需要在请求头中携带一个X-CSRF-Token请求头。
获取CSRF Token
我们打开洛谷,按F12,在元素项可以找到这个:
这个就是我们所需要的CSRF Token。
提取CSRF Token
通过正则表达式,我们很轻松就能写出代码:
12345678910111213141516171819const axios = require("axios").defaultconst cookieSupporter = require("axios-cookiejar-support").defaultconst cookieJar = require('tough-cookie')let jar = new cookieJar.CookieJar()let _ = cookieSupporter(axios.create({ baseURL: "https://www.luogu.com.cn", withCredentials: true, ...
如何处理Git的大小写问题
今天给博客搞SEO的时候,将多数的链接全部改成小写的了,然后就炸了……
问题原因
这个问题发生是因为Windows系统对大小写不敏感,所以Git也默认大小写不敏感。但像Github这类代码托管平台用的是Linux,Linux对大小写敏感。
解决过程
首先,在Git本地仓库下执行:
1git config core.ignorecase false
这行命令表示关闭忽略大小写。
然后,修改我们的本地文件/文件夹名:
修改完后push到Github上,然后查看效果:
1git push origin main #我用的是hexo,所以跑了hexo d,普通Git仓库push就好
好家伙,之前大写的没被删掉,不过小写的成功被push上去了。
目前只能一个个手动删除远程的文件/文件夹,因为本地的已经是小写了……不知道有什么解决方法😅……
【VS Code扩展】获取编辑框中的文本
在编写VS Code扩展的过程中,我们有时会需要获取编辑框中的文本。
准备工作
在获取编辑框中文本之前,我们需要创建一个编辑框的实例:
123const vscode = require("vscode")...let editor = vscode.window.activeEditor//获取当前激活的编辑框的实例
获取文本
获取整段文本
我们可以通过以下的代码获取到编辑框中的文本:
12let editorText = editor.document.getText()console.log(editorText)
getText()函数会返回一段文本,其为编辑框中的内容。
获取分行文本
我们可以通过以下代码获取到分行的文本:
12let textArray = editor._documentData._linesconsole.log(textArray)
editor._documentData._lines会返回一个字符串数组,我们可以通过textArray.length获取到代码的行数,也可以通过连接它们达到与获取整段文本一样的效果。
【NexT主题美化】点击页面浮现24字核心价值观
在许多时候,我们希望用户点击页面时会有一定的反馈(如浮现字幕、放烟花)。这次,我们来实现一下如何使用户点击页面时,弹出24字核心价值观。
创建clicker.js文件
在博客根目录往下找\themes\next\source\js文件夹,创建clicker.js,文件内容如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071!function (e, t, a) { function r() { for (var e = 0; e < s.length; e++) s[e].alpha <= 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[e].y--, s[e].scale += .004, s[e].alpha -= .013, s[e].el.styl ...
【洛谷 P2393】yyy loves Maths II
这一道题要排坑的是关于精度的问题。
题目很简单,要做的只有一下三点:
读数据
加数据
输数据
在C++中,常用的输入方式有scanf()和cin。首先我们以scanf()函数进行讲解,因为这两种输入方式的判断结束方式不一样。
使用sacnf()函数
scanf()函数其在输入结束(即读不到数据时)将返回常数EOF(即-1),而读到数据时会返回读到数据的个数。所以我们可以得出第一版代码:
123456789101112#include<bits/stdc++.h>using namespace std;long double ans,tmp;int main(){ while((scanf("%Lf",&tmp))!=EOF) { ans+=tmp; } printf("%.5f",ans); return 0;}
Tips: scanf()函数输入long double类型时需使用%Lf占位符,但printf()函数无论输出float类型还是long double类型,均使 ...