基本的 Makefile 写法

寒假的作业是写一个操作系统。老师给我们的要求比较低,基本上是能看懂学长以前写过的代码就给及格,自己写的像样的基本上良以上了。当然一个学期蜻蜓点水地学了这点东西,写一个操作系统,能不能“操作”,还是个大问号呢。

参考书自然想到了于渊的《一个操作系统的实现》。目前基本上就是抄着大神的代码,然后改改变量名啥的。抄到第三章的时候,看起来以后还要继续编译好多次,所以就干脆写个 Makefile 偷懒。但是这 Makefile 我是需要写的时候就查,写完之后又忘。所以干脆自己写个文章记下来算了。

所以,这篇文章适合那些对 Makefile 有初步了解,但是不常用,需要找点线索来回忆的人(比如我)。如果是对 Makefile 一无所知的话,请 Google 之。

阅读全文

C++ 中 union 的使用

我之前总是觉得,10 万行 C++ 代码里,用到一个 union 就不错了(可能比较夸张)。但是现在我突然想到,在一类情况下,union 还是大有用武之地的。

有的时候我们需要直接对二进制数据进行操作,比如将一个结构体的信息保存到一个二进制文件里的时候,或者直接操作一些底层的东西,或者说开发一些底层的协议啥的。在之前我都是用“把结构体指针转换成 char 数组指针”,然后进行的。

阅读全文

C++ 构造函数或析构函数中调用虚函数

在父类的构造函数或析构函数中调用虚函数,调用的不是子类的重载函数,而就是这个类的相应函数。但是如果在父类的其它函数中调用虚函数,会调用到子类的重载函数。

其实这个是很容易理解的,构造函数调用的顺序,是先调用父类的构造函数,再调用子类的构造函数。由于父类的构造函数运行的时候,子类甚至没被初始化,所以不好调用子类的虚函数。反过来看,析构函数是从子类开始调用到父类,父类的析构函数调用的时候,子类已经析构了,这时虚函数也不能够调用子类的。

阅读全文

开源 Android 游戏引擎 libGdx 工程配置

libGdx 是一个开源的 Android 游戏引擎。我也刚开始使用不久,个人觉得这个引擎还是比较轻量级的。之所以接触这个引擎呢,是因为 Java 课的期末项目是一个 Android 程序,我选择用这个引擎写一个华容道游戏,很简单吧。libGdx 有一个优点,就是可以在 PC 上模拟游戏的运行,不需要 Android 模拟器。用过 Android 模拟器的都知道那是慢得……

首先,至少需要一个 Eclipse… 如果想生成 Android 的程序,也就是 apk 文件,那么还需要装 Android SDK.

然后,从 libGdx 的官方网站下载最新版的 libGdx. 目前最新版是 0.9.2 . 具体地说,就是去那个页面把 libgdx-0.9.2.zip 这个文件下下来。然后解压待用。

阅读全文

USACO Section 1.5 解题报告

今天晚上要在电信楼 203 讲 USACO Section 1.5, 解题报告先发到这里吧。

幻灯片在文章的最后提供下载,为了加大文章的篇幅,就……就把代码粘在这里……

阅读全文

Codeforces Beta Round #95 (Div. 2)

刚才刚刚参加完 Codeforces Beta Round #95 (Div. 2). 第一次做 Codeforces 的比赛,感觉国外的题目还是比国内稍微水那么一些……

虽然说没有 AK, 其实也不奢望 AK, 但是至少两个小时之内能通过前 4 题的 pretest, 并且能够再思考一题,感觉还是不错的……

现在正在评测,A 和 B 已经 AC 了,随便发点题解,之后睡觉。

阅读全文

开源 jQuery 插件之元素漂浮 jFloat

最近做一个项目中需要一个功能,让一些图片或者 Flash 之类的元素漂浮于页面上。我 Google 了一下,发现能够实现功能的 JavaScript 是有,但是用起来很不方便。我还找到了一个 jQuery 的插件,但是用起来有一些 bug. 所以我就干脆自己重新开发了一个,还打算添加一些功能。

阅读全文

今年的 ACM/ICPC 区域赛总结

星期一刚从福州回来,至此,今年的 ACM/ICPC 区域赛就这样结束了。

这一届我们队甚至我们学校的 ACM 竞赛可以用惨淡二字形容。五个赛区中,我们除了福州赛区外,每个赛区都有一个队的名额,福州赛区有两个队的名额,由于学校预算问题,我们放弃了成都赛区。最终,我校共获得三块铜牌,两块铁牌。

我们队共参赛三次,其中带星一次。五块牌中的所有有色金属牌,都是我们队拿到的。其实很惭愧,因为三块铜牌,和一块铜牌,有能有什么区别呢?

我们队的三个队员,三场比赛中都只过了两题,最终都是铜牌。虽然在福州,我们似乎可以出四道题,但是最终在调试的两道题还是没有 AC.

我觉得我们队的互补性还是比较强的,我在编程语言、开发环境和英语阅读上比较有优势,Wideas 代码能力强,经验丰富,WH 能够想出一些奇怪的算法,还有很多动规题都是他出的。但是,这个互补,却没有把整个 180° 角覆盖完……

拿我自身来说吧,平时训练比较少,高中训练也是相对较少的。并且考虑代码的“整洁性”过多,写得也比较慢。所以到了后两个赛区,我几乎就没有坐在电脑面前过,基本上都是看题目,想算法,帮助队友 debug 之类的。还有我的计算几何题目做得少,模板没有准备好,有的题目一些训练有素的队伍应该是水过的,我们就只能放弃了。

最后我还觉得大一的时候没有重视训练也是比较可惜的,今年 ACM 的训练也只是从暑假去北京之后才开始的。

在比赛之后的那瞬间,突然感觉到,这不是结束,这只是开始。

POJ 1062 昂贵的聘礼

POJ 少有的中文题目。这道题的模型就是物品交换模型,可以用图论解。顶点表示物品,边表示花费。从 0 顶点到达目标顶点所走的最短路就是最小花费。

原题地址:http://poj.org/problem?id=1062

阅读全文

Codeforces 9E Interesting Graph and Apples

这道题首先给你一个 n 顶点 m 条边的无向图,然后让你加若干条边,使得这个图中的每个顶点都只在一个圈上(自连环也算是圈)。如果不能做到,则输出 NO.

如果能做到,输出 YES 之后,再输出需要至少连多少条边,然后把这些边列出来,并且要求输出字典序最小的解(具体见原题)。

原题地址:http://codeforces.com/problemset/problem/9/E

阅读全文