01 背包的二进制优化

也是在刷题的时候发现的,比如 hiho week 195。一眼看过去就是一个 0-1 背包问题,然后直接 DP 上了,当时觉得应该问题不大,结果最后只有 50%,一看数据,100% 的数据为 1E5 量,简单的 DP 的话复杂度为 O(MN),这样复杂度估计是 1E10,这样肯定会 TLE。 然后一看,他的单个商品的全权值很低,都在 [1, 10]…

二分查找和 Lucas 定理

因为这段时间都在打比赛中度过,有几个小的收获点这边可以留个纪念。 1. 二分查找的几个用法。 一般而言,二分查找都是用在不同数字的数量集中。这样的好处是如何快速的定位。但是,如果是排序的包含相同数字的数组,要求获得某一个数出现的次数时,就得用另一种二分查找的变种了。 假设是 [1, 1, 2, 3, 3] 这样的一个数组,要求获得 1 和 3 的个数时。普通的二分查找只能定位到其中的一个位置。之前我的做法是,向前向后搜索。但是,在极端情况下,比如一整个数组都是 1,此时,算法的复杂度退化为 O(N),然后就 TLE 了。 所以这边也正好是看到【剑指…

MJsonViewer v2.0 插件发布

可能是第一个支持嵌套 json 解析的火狐 json 插件。正如,之前写的那样,因为持续开发,主要是因为喜欢火狐,而且确实有新的需求进来了。 距离上一次的插件发布已经过去了两个多月了,其实总的使用下来还是比较舒服的。不过,有几个小的缺点也还是要说一下。如果一个 json 中的 k-v 的 v 包含了一个嵌套的 json,一般的 json 解释器都是将其作为 string 来解析。 这就带来了一个问题。在软件开发中,我们经常会在 json 中嵌套…

JSON 解析器

这篇博客主要是最近开始玩 C,所以准备找个东西练手,突然发现,顺手写个 JSON 解析器吧。于是就开始了。 相对于其他比较成熟的上层语言。C 主要的问题就是没有基础的数据结构,而且相对于弱类型语言而言,C 的类型在解析的时候有个类型转换的坑。但是相对于其他的强类型语言而言,C 又有一个好处,那就是没有一个 void* 解决不了的问题,如果有,那就用两个。 不过相对于工作时的清闲,现在上课的时候确实没有什么时间进行额外的代码编写。所以断断续续写了一周多。 主要的使用方法就是: struct value *val = parse_new(); char *json1 =…

VIM 浏览器预览插件

插件的地址:GITHUB. 写这个插件的原因很简单。因为之前一直再写一个页面,因为在主力的编辑器是 VIM,所以就顺手用了。但是遇到一个很尴尬的地方,就是在想观看编写的效果的时候,常常会需要使用 Finder,然后进入当前的工作目录,然后双击 html 文件。 非常痛苦。于是去查了下 vim 有没有这么一个插件,可以方便的进行浏览器预览的。 当然也是查到了相关的方式,比如这篇博客: ” 在浏览器预览 for win32 function! ViewInBrowser(name) let file = expand(“%:p”)…

VIM Quickrun 插件

这同样是一个重复造轮子的项目,主要的原因就是受大家喜欢的 https://github.com/thinca/vim-quickrun 并不能很好的满足我的需求。 他的运行方式是新开一个 buffer 然后将运行的结果放在 buffer 里面。这样有一个问题就是交互不是很方便。同时,我对这个插件的需求主要还是在写 ACM 的代码时,可以快速的运行。同时在写单脚本语言时,可以方便的配置。 所以,基于以上的几个原因,我自己便开始写了这么一个小插件。 原理其实很简单,就是对你当前的文件名进行一个匹配。比如 “main.cpp”,我会发现这个文件的后缀名是 “cpp”,于是,就会自动查找到配置文件中的 “cpp” 选项。 let g:quickrun_known_file_types = {…

Hexo Gandalfr 主题发布

主题地址: hexo-theme-gandalfr 在线预览: Example 起因:因为之前考虑到英文博客的主题问题,之前一直用 even 主题,但是始终觉得不是特别中意。于是找到了 apollo。 发现这是我比较喜欢的类型。简单,足够简单。但是有两点不足: 文章没有 Tag 提示。 文章中的代码段没有高亮。 在较大屏幕上显示的时候,有点小。(主要内容 600px 是有点小了) 所以这边也就是修改了下,并且打包上传。因为原作者已经停止继续开发了。 安装 # cd…

MJsonViewer v0.1 插件发布

只是另一个使用在火狐上的 JsonView 插件。代码地址:GITHUB 为什么要写这个插件 因为现有的插件并不能很好的满足我的需求。比如火狐的自带的 json 解析器,初看挺好的,但是用的时候会发现比较复杂。并不能很直观的表示数据的类型。 JsonView 插件,之前我一直使用的插件,但是有个不好的地方就是对返回值的头部类型数据校验非常严格,通常面对一些没有明确类型的 json 返回不能很好的解析。之前也写过如何进行配置来避免这个情况,但是,还是不方便。 JsonHandler 插件,功能强大,不过需要自己把 json 数据粘贴进去。不是很方便。 所以,我这边自己给自己写了个 Json 视图插件。 主要的功能点 字体使用…