Archive for March, 2011

Humor from xkcd


20 Mar

xkcd是个幽默漫画的网站。多的不说直接上个图。

Time Management

 

网站的底部有很扯蛋的标示,大意是这个漫画可能有重口味语言,或者重口味笑点,以及高级的数学(也许会不适合文科的童鞋)。

Warning: this comic occasionally contains strong language (which may be unsuitable for children), unusual humor (which may be unsuitable for adults), and advanced mathematics (which may be unsuitable for liberal-arts majors).

 

发布协议是Creative Commons Attribution-NonCommercial 2.5 License 所以我就肆无忌惮地开始贴了。。。

Storage of Signed Integer in 32 Bits


19 Mar

signed int 表示范围

有符号32整型使用补码进行存储,其本质就是在mod 2^32 下的同余表示

设x (x >= 0) 以及x的反码y,显然: x + y == 2^32 – 1                                      (1)

因为所有运算都是在mod 2^32 设定下进行,所以-x 可以表示为

-x == 2^32 – x (mod 2 ^32)

由(1)式:2^32 – x = y + 1

也就是说,一个负数可以表示为它的反码加一 (正数为原数,该表示方式称为补码)

进一步可以证明,从最高位是否为1来判别该数的正负性

特别地,-2^31 == 2^32 – 2^31 == 2^31 (mod 2 ^32)

该数补码形式和自身绝对值相同,所以不能通过补码2^31辨别是-2^31还是2^31,故必须舍弃一个。

有两种方案:

1. -2^31 ~ 2^31 – 1

2. -(2^31 – 1) ~ 2^31

都是可行的。 但是因为2^31的最高位为1,为了同一最高位为1的都表示负数,故采用方案1

因此signed int 可表示范围为-2^31 ~ 2^31 – 1

注意到正负界是不对称的,唯有-2^31没有在这个范围内的相反数。

 

Summary for Recent Training


01 Mar

上周是开学一来第一次内部测试, 考了两次。

第一次是Tim他们出的,排版不错,题目质量还是挺高的,简单题也要动一番脑筋才能想出。第二题candies属于较难的题目,考试结束后听了几遍才学会。但是里面的方法很不错,具有启发性:比如第一种解法是运用了分块的思想,通过假设块的大小,最后经过论证得到分成sqrt(n)块最佳。这种方法虽然不是特别高效,但是具有普适性。官方的标准解法则是更上了一个台阶,直接二分进行分治。一般的分治的套路是在每个子问题解决完后才通过合并得到整个的解,而此题的分治,因为要求除了某一个元素的其他N – 1个元素合成的可能性,所以实际上解是在叶子上得到的。 看似非常简单的思想实际却是一种对划分思想的深刻理解和巧妙运用。第三题我采取了裸搜,目前还不知道较为靠谱的做法。。。

最后成绩分数在意料之中,但是分布却在意料之外。第一题由于强制类型转换回int(为了消除编译警告)时括号打错了位置,导致大数据全部WA,只有20分,修改后过了。第三题是在午饭走之前裸搜的,本来就没抱什么得分的希望,可能是因为数据太弱,或是题目隐藏的性质,裸搜破天荒地A了。

 

第二次则是张老出题,这次我没有怎么研究第一题(失误),转而去研究2,3题。2题似乎是个数位DP,但是当时连弱化版的错位排列公式都没推出来,所以后来就放弃了,第三题应该是这次考试最简单的,把题目的T并{S},理解成了直接把S加在T中(不知道怎么想的)。。于是只有20分。

最后当然就是惨剧了。。大多同学靠1题拿分,我就没有了。。

 

我觉得这两次做下来,自己还是对题目的全局把握度不够,另外还有一些细节上的疏忽导致分数的大量流失。所以说,在今后的练习中,应该限定自己在一次测试就过掉全部。就算想出一道题拍出程序很激动,也要按捺住情绪,做比赛时一样的调试和检查。这样才能确保省选时能尽可能考出自己的全部水平。

Teddy

Studies,OI and Love