HashCode 2020

Hash Code 是由Google举办,并且每一年举办一次的大型编程比赛。今年的比赛官网

关于最终比赛结果,在一共10724份提交代码的小组中,我们最终积分是两千四百多万分,具体排名为2100名。感谢小组内所有大佬的付出,让我们4个小时的努力有所回报。

今年的比赛题目和数据集见此。该仓库包含今年的练习题目与正式题目。此篇文章主要陈述正式比赛题目中的数据集b和d的解法。

至于为什么只写这两个数据集的解法,因为是我写的。但是关于d的算法在数据集d上的实现并不好,然而在f上的实现超出预期。

More

LeetCode刷题记录-Part1

最近在找实习刷LeetCode,所以开了这么一个系列。一是巩固自己的记忆;二是发出来我的解题思路或者我找到的认为比较好的解题思路,想让大家集思广益,分析是否有更好的解法。熟人直接微信或者qq小窗即可,不熟的见上方邮箱。这个系列估计会在我找到全职工作后才会停止更新。

我觉得刷LeetCode最大的乐趣并不在于你WA了多次后迎来AC,或者一遍AC,而是AC后去讨论区,看看其他人的代码是怎么写的?看看有没有和你不一样的解题思路?看看其他人是怎样优化他们的代码?看看他们的编码方式有哪些值得学习。这些才是我认为LeetCode上最有用的地方。

More

毕设填坑笔记-Git lfs的使用

自从自己拟了这个毕设后,感觉自己把自己坑的很惨,上次训练模型把电脑烧了后,总是能碰上奇奇怪怪的问题,所以打算开个新篇幅来记录我是如何填上毕设路上的自己给自己挖的坑。

我的毕设选题是关于用GAN生成图像方面的,为了记录中间的过程,我打算把每次训练生成的epoch都存下来;同时还想用git来管理代码版本,这时摆在我眼前的首要问题就是如何处理图片这些大文件。

使用一些开源的框架和成熟的模型,可以从一定程度上减小自己所需要的训练集体积,但是招架不住每次 pull/push 时所面对的动辄几百兆的传输列表,于是便在网上找到了git基于大文件传输的扩展 – git lfs(Large File Storage)

More

中断以及中断处理

中断

事实上所有计算机都提供了允许其他模块(I/O、存储器)中断处理器正常处理过程的机制。分类如下:

  • 程序中断:在某些条件下由指令执行的结果产生,例如算术溢出、除数为0、试图执行一条非法的机器指令以及访问到用户不允许的存储器位置。
  • 时钟中断:由处理器内部的计时器产生,允许操作系统以一定规律执行函数
  • I/O中断:由I/O控制器产生,用于发信号通知一个操作的正常完成或各种错误条件
  • 硬件故障中断:由诸如掉电或存储器奇偶错误之类的故障产生

More

详细谈谈二维码生成原理与编码(一)

本想一篇文章就解决的,后来发现需要介绍的有点多,一个晚上绝对写不完,看来又要开新坑了。

一、什么是二维码?

二维码有很多种,其中占据大半江山的主要有两种,一是以 PDF417 为代表的堆叠式条形二维码,另一个是以 QR Code 为代表的矩阵式二维码

PDF417 是“便携式数据文件”的缩写。它最少分为三层,最多 90 层。包括左右空白区、起始符、终止符、左右层指示符号字符等。它的具体架构如下图:

More

Problems in Installing openCV on Mac

I have installed the openCV3 successfully yesterday. And I find there are lots of problems even wrong ways in the website. So I decide to write this article to tell others who ready to install openCV after me so that you can use the simple and right way.

Before I tell the details, there is a video which is easy to understand the the whole process on YouTube.

In this article, I will tell you the steps of installing openCV and the details of these steps.Then, I will show you some common problems and their solutions.

More

如何使用Vim

Vim在线手册http://vimdoc.sourceforge.net/htmldoc/usr_toc.html

什么是Vim

从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆。几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与Vim截然不同的方式:命令目录(鼠标或者键盘驱动),组合键(通常通过control键(CTRL)和alt键(ALT)组成)或者鼠标输入。Vim和vi一样,仅仅通过键盘来在这些模式之中切换。这就使得Vim可以不用进行菜单或者鼠标操作,并且最小化组合键的操作。对文字录入员或者程序员可以大大增强速度和效率。

More