最近没做什么印象深刻的题。唯一记得的是一个求凸多边形重心的算法。下面讲一下。
以前以为三角形的重心是三个顶点坐标的平均值这个定理可以推广到多边形,后来发现错了。
如果把两个几何体组合起来,它们整体的重心一定在原来的两个几何体各自的重心的连线上,而且肯定更靠近两者中比较重的一边。根据物理中力矩的原理就可以知道整体的重心分别到原来的两个重心的距离之比就是原来的两个几何体的质量之比(在平面几何中就是面积之比)。如下图。

在凸多边形中,可以由一点出发,向其它各顶点作连线,这样就把凸多边形分割成了若干个三角形。每个三角形自己的重心都可以求出来。然后再按照上面说的方法把所有这些重心组合起来就好了。这道题是UVA10002(online-judge.uva.es/p/v100/10002.html)。
最近快没时间做题了,一直在做我们那个判题系统。我负责其中的一个组件:出卷器。就是把比赛用试卷做成文件,然后提供可以分析题目文件的组件,供客户端和裁判机使用。这本来是个很好的东西。可是老师很无聊地说下学期开学的时候校内选拔赛就要用这个系统。简直莫名奇妙,这好好的暑假两个月还让不让我们好好训练了。我现在几乎所有时间都搭在这个东西上了。而且因为时间紧,我们现在没法做新的,只能改原来遗留的一个版本。那个版本是2003年大四的几个同学的毕业设计,是用XML存题目的。我们要做的新系统要用本体存题目。原来那套东西用起来还可以,但是代码一坨屎。乱七八槽一堆,都和图形界面写在一个类里面。我现在得读懂它,然后再把新的一些小功能加进去。要加的都是我们老师想出来的一些极无聊的功能。比如要用数字签名检查文件是否被人改过,无聊透顶。他还要求做成.exe文件。妈的Java跨平台就跨在它不是exe文件,做成.exe还是不是Java了。结果他说做成exe是为了防止别人反编译。妈的那点屁代码值个屁钱,谁他妈要你源代码。再说老子写出来的代码,我愿意开源我就开源。妈的累死我了。

