lei's profileWelcome to my space!PhotosBlogListsMore Tools Help
Photo 1 of 42

lei wang

Occupation
Location
Interests

Feed

The owner hasn't specified a feed for this module yet.

页面访问统计

click here

Welcome to my space!

December 12

大端(big-endian) 小端(little-endian)

big-endian 和 little-endian 是内存中存储数据的两种不同方法。
所谓大端和小端指的是多字节值的哪一端存储该值的起始地址。
如一个32位整数n=0x01020304,01这一端称为大端,04称为
小端,如果该4字节数据在内存中的地址从左到右递增,即大端
存储起始地址,我们称其为大端(big-endian)存储法,否则为
小端(little-endian) 存储法。
 
以下C程序用来判断一台机器使用哪种存储方法

#include <stdio.h>
int main()
{
    union
    {
        short a;
        char b[2];
    }x;
    x.a=0x0102;
    if(sizeof(short)==2){
        if(x.b[0]==0x01&&x.b[1]==0x02) printf("big-endian\n");
        else if(x.b[0]=0x02&&x.b[1]==0x01) printf("little-endian\n");
        else printf("neither\n");
    }else printf("size of short=%d\n",sizeof(short));
    return 0;
}
November 29

国际大学生程序设计竞赛例题解 五

我们的新书终于出版了,isbn是9787121074356,在搜索引擎上也能搜到了
 
下面是百度结果:
 
(by the way, 我毕业后会加入百度,希望大家多多支持百度啊!)
 
这是谷歌的:
 
该书适合那些有一定的程序设计基础,希望在算法方面有所提高的中学生和大学本科生。
尤其适合参加ACM/ICPC或者NOIP的同学,本书可以作为一本入门级的教材。
我们力求以最平实的语言来刻画题目背后的算法,希望读者可以通过例题举一反三,
毕竟我们的目的不是教会你做某一道题。
 
由于该书的作者多为在校学生,受水平和经验所限,书中难免有所差错,欢迎各位读者指正。
mail: is03wlei@163.com (王磊)
qq: 12940076 ^_^
 
 
May 06

08 icpc final 加拿大之行

                                      
        这么多天过去了,回来浑浑噩噩过了几天,最近又生了一场大病,好多事情都记
不清了。简单回忆一下整个行程吧。出行之前先分析一下人员结构:
        郭老师,广东籍
        肥东,广东籍
        张大牛,外籍
        我,外籍
嗯,很好,很强大!还不至于被彻底淹没。

4月5日
        下午两点多从香港登机,经过11小时飞行到了温哥华。旅途相当艰苦,被挤在那
个狭小的空间里动弹不得,看了一路电影,基本没睡觉。上午11点多到,等了一个小时才
取到行李。出了机场感觉还是挺冷的,乘公交去Richmond,一个华人社区,在那里的中餐
馆吃了午饭,加小费8,9加元吧,令人郁闷的是,这里的中国人大多是讲粤语的,又被无
视了。然后去逛超市,再一次见识了Made in China的强大威力。本来看到几个钥匙链挺漂
亮的,看到是中国造的就没买。
五点多乘飞机去卡尔加里。打的去Howard Johnson,特别要说明的是,这里的司机很黑,
跟你索要小费的时候是毫不客气的。
        晚上暴走卡尔加里。由于住的地方比较偏僻,在高速公路旁,走来走去都觉得卡
尔加里是个大农村,但后来证明并不是这样的。
        回酒店打电话联系北电的同学Miller Ding,谁知这家伙给我留了一个同事的手机
号,而那家伙又恰不在卡尔加里,未果。

4月6日
        吃完早点后打车去Downtown,准备从那乘大巴去Banff。去了Downtown才知道卡尔
加里并不是农村,先前是盲人摸象了。加拿大确实是人烟稀少,即便在如此繁华的市区也
见不到几个人。中午乘车去Banff,行程126公里,走了两个多小时,刚出卡尔加里的时候
路两边是广褒的草原,不过草是黄的。走着走着,地形发生了很大的变化,高大的雪山出
现在你眼前,由于是第一次看到雪山,感觉很新鲜,看了一路,不过他们三个人都在睡觉

        很快到了Fairmont Banff Spring,当地最豪华最奢侈的酒店。入住时有件事情比
较惊险,服务员拿着一张纸问了一堆问题,选yes/no的,有些问题根本没搞懂就乱答了,
其中有一项行李服务,不知道咋个服务法,也没说要收钱,就糊里糊涂选了yes,后来张大
牛提醒说可能要收费的,于是又取消了,后来证明这项服务费用要300加元,就是把行李放
在他们的储存室里,天哪,我们四个人的行李加起来总价可能都不值这个。

4月7日
        去Columbia ice field玩,很远,路上就要走两个小时。冰川中心确实很美,空
气很新鲜,积雪一米多深,好多人玩打雪仗。正当我们在厚厚的雪层上玩得很尽兴的时候
,导游冲着我们喊get down,说很危险,可能会陷进去。我赶紧跑下来,郭老师还是相当
英勇的上去照了一张相。

4月8日
        下午误打误撞去了温泉玩,这趟旅游线路我们本来没有选上,可能有些人不去了
,车上还有空位,导游就让我们上去了,可惜没来得及叫张大牛,他自己说在养精蓄锐,
嗯,那也好。刚到的时候,准备在门口买游泳裤,娘的,都是二三十块的,没天理了,于
是不准备进去了。后来发现入口有出租的,才1块5,这才敢进去。第一次泡温泉,感觉真
的很爽,尤其是当你被雪山环抱的时候。

4月9日
        玩了这么多天了,终于轮到正事了。带着平静的心情开始了比赛。前一小时在看
题和观望,我看了A,B,C,F,都不会做。后来zzy说K可以做,但是他很谨慎,让我再看一遍
有没有错,很快看完确认只是最短路。看到B题很多人过,就是判断一个多项式是否在自变
量为整数时值为整数,跟肥东说可以考虑随机,由于要做表达式处理,交给他了,肥东做
的时候很聪明的选择了在小范围内枚举,大范围内随机,哪知正确解答只须一个更小范围
的枚举就可以了,被他撞对了。B,K都比较顺利的过了。接下来过的最多的就是F了,我想
了很久只想出了几种最简单的情况,而且以为这就是所有的情况了,于是写了个很短的程
序交了上去,错了。zzy看了后指出了正确的做法,推导出一个简单的式子,过了。然后肥
东和zzy研究了那个计算几何题,也很快过了。这时比较好做的就剩A了,zzy看到了一个非
常重要的条件,我之前一直没看到,这下就变成暴搜题了,搜索量非常小,只是写起来比
较麻烦,和07final那道F题差不多,考察代码能力的,当时我们没有去碰那个题。我规划
了一下就上去写了,写得非常顺利,编译通过后直接过了样例,交了就过了。这时5题,排
名比较靠前,还剩一个半小时,非常不错。然而形势就此急转直下,07年那一幕又上演了,
我们依然是很没追求,心里只想着做6题就行了,就这样死做I,在想出G
题的算法后也不敢开,就这样I题runtime error到最后,很可惜,比赛有时候就是这样,
你想用充足的时间来确保一道题,却不能如愿。
        最后是23名,和去年差不多,稍有进步。我是不计较这些的,我从来都认为来这
里就是享受比赛的全部过程的。


        就写这么多吧,感谢集训队全体同仁的支持,感谢所有在9号晚辛苦观战的朋友们
我和肥东滚蛋了,你们明年再接再厉啊!
October 03

我总是心太软

  研究生入学一个月了,现在看来,和本科时的感觉相差不大,主要还是上课。
三门必修:程序设计理论,算法和英语。程序设计理论有点难,不习惯那本英文
教材里描述定义和定理的方式,感觉好多地方并不严谨。英语课遇上个变态的口
语老师,还是个乌克兰人,真不知道英语怎么说得那么好,此君作业留得奇多,
定了若干规矩,动不动就要扣分,比如迟到一次扣5分,三次没成绩,课堂提问
不会扣X分,每次课要看20页的阅读,还要retell the story....至于算法课,就
比较轻松了,大部分都是比较熟悉的内容,每次去上课都是看其他书。
  下个月又要出去比赛了,这将是我最后一年参加acm分区赛,11月3号去长
春,9号要赶去越南的砚港。肥东和我两个老人带着张大牛,两个老家伙都已经
参加过world finals了,心情应该比较放松了,只是张大牛作为现役中大acm第
一人其压力应该是有的,两个老家伙就尽全力辅佐他吧,希望不要留给他什么
遗憾,也希望他能够轻松上阵。我们去年在河内能够出线就是因为心境比较好,
赛前没有想关于出线的事情。连续两年都去越南,略感郁闷,去年在首都河内尚
且饿个半死,何况这次是个不知名的小城市,一点兴奋感都没有,好在赛后会
去胡志明玩,领略一下传说中的西贡女人。
  这学期依然是孤家寡人一个,唉,知己可遇不可求啊,也怪自己的生活圈子
太小了,没机会认识女生。本来想工作以后再考虑这些事情的,可是家里人开始
施加压力了,不得不提前了。想我这样一个不喜欢广东的人想在这里找个女朋友
应该是相当困难的,而且前景也是不容乐观的,周围的人大多毕业后留在广东,
而我在主观上是一百个不愿意,我又是那种把找女朋友当作找老婆的人,不愿意
浪费丝毫精力去经营一个没有结果的爱情。这几天看friends,看到ross,joey
他们都有结婚后备人选,自己也yy了一下,可是我还没有和哪个女生亲密到她
愿意做我的后备,所以也仅限于yy了。
 
May 12

07 icpc world finals总结

             

这篇总结拖了太久了,前段时间以写论文为借口,迟迟没有写。比赛过去将近两个月了,不过这样的比赛是值得永远记住的,不论成绩怎么样。下面简单记一下在东京的见闻吧。

 

312

       上午10点从香港出发,经过4小时的飞行到达东京成田机场。过关时很不顺利,我的箱子被翻了个底朝天,小鬼子把里面的布都扯烂了,估计是怕里面藏着毒品。从机场到驻地很远,地铁票也是非常的昂贵,1000多日元。天黑的时候到达disney resort,一出来立刻感受到浓郁的迪斯尼的气氛。这时自然是例行的拍照了,小bug刚到日本就出洋相了,一个日本女人走过来拿着照相机跟bug示意帮忙照张相,bug吓得屁滚尿流的跑了,我们狂汗。然后打的到hilton tokyo bay,短短几百米花了700块。我在想这样的地方以后自己有没有机会来呢?

       到达酒店后,又是先见到浙大的兄弟们,他们早到一天。然后郭老师跟大傻去注册,我在一边无聊地玩起了乐高。

       晚上去cyber café逛了一下,始终上不了argo,郁闷。然后看到跳舞机那里有几个美女,就站下来看了一会儿。这里还有下棋的和打牌的,看到petr在虐别人,不禁想起咱们的kk大哥。

 

313

       上午是IBMtech trek,实在是无聊的很,因为听到鬼佬不时的哈哈大笑,我们根本不知道人家在说什么,感觉特困。

       中午组织游览disneysea park,这个地方真是不错。首先布景非常好,感觉像进了童话世界。大型的水上表演加上礼花非常的震撼人心。还有很多刺激的游戏,不过都要排很长的队,我们玩了过山车,还有一个骗人的海底探险,进去以后玻璃外面不断喷水泡,还以为真在水里呢,后来被大傻发现说水泡是在两层玻璃之间的。来这里玩的基本上都是我们这个年纪的,好像mm更多,可让我们饱了眼福了,经过那期间的观察,这儿应该是美女最多的地方了。当时天气还比较冷,她们的典型服饰却是短裙。

       中午在disney这一餐彻底把我吃穷了,组委员赞助了3000块餐费,我一顿就吃了2400,哪里够吃啊,下顿要挨饿了,好在后来在disney外吃的都很便宜。

314

       因为第二天要正式比赛了,所以这天以休息为主。下午进行了短暂的试机,不过却遇到了一件很郁闷的事情。我们三个走的时候忘带密码纸了,结果被组委会叫去质问,说有人试图在我们的计算机上访问其他计算机,我们立刻表示我们不知道,并且道歉。以后参加final的同学不要再犯这个错误了。

315

       最不想提起比赛的部分了,开始的形势非常好,过3题时排在第3,过4题时排第10。交第5题时还剩1小时10分钟,我跟他们说,再过两题应该可以拿牌了,谁知最后一题也过不了。我们总共开了6题,说实话,算法性都不强。我们最后拼命做的那个D题是个阴险题,最后结果是64位整数,中间结果却狂溢出,而且只有直接计算出公式时才会溢出,大概就是这样a*b-c*d,两个大数相减,a*b溢出,有些队是用复杂度较大的累加法来计算的,这样就不会溢出,实在是没意思。不知道当时在想什么,三人都不够冷静,竟然没有使用高精度,总是想着可能改个小地方就能过,然后就有时间做F。其间大傻也在写Fbug和我则在想着改D。时间慢慢过去了,由于F是个代码量较大的广搜题,所以最终放弃了。三人一起改D,希望能再过一题。可是改的太没有目的性了,最后十几分钟的时候,我尝试用java来写,不过没有写完……

       就这样浑浑噩噩地度过了最后一小时,毫无建树,三人无比沮丧。封board时排15名,最后却掉到了26,实在是丢人。

       感觉这样的比赛心理素质太重要了,不要奢求什么超常发挥,能够把平时的水平发挥出来应该就能够取得很好的名次了。会做的题过不了,实在是太遗憾了。

       颁奖之后的演出相当不错,印象最深的是那个偷东西的家伙,上去的时候就从观众席偷了一堆手表,然后又把这些人叫上去,把表还给他们,再偷个钱包,腰带什么的。有个北航的朋友也上去玩了,他很自信的认为那人偷不走他的东西,被人家耍了几分钟后,很自信的走下台,并举起双手向观众致意,意思是没被偷,谁知小偷却拿出了他的领带,真是不可思议,我都没看见那家伙怎么偷的。下来问朋友,他说一点感觉都没有,实在太强了。在观众的强烈要求下,小偷又偷了一只内裤,不知是真是假,感觉这个应该是魔术,不然难度太大了。其实这家伙是反扒的,发现谁被偷了东西,就再把它偷回来。

316

       搬到市区去住,酒店离皇宫比较近。中午去吃饭的时候可费了不少劲,花了两个小时的时间来找餐馆,不是餐馆少,是不知道该吃什么,看到非常多的中国料理,在咱中国还没听过这个词,在这倒挺流行的。

317

       早上出发准备去游皇宫,发现走过一扇小门可以到楼外面去观景,谁知四个人过来后却被锁在外面了,没办法只能开辟新路,从紧急楼梯下去。

       日本的皇宫实在是没意思,由于有皇室成员居住,所以不能进去参观。只能看到最外面的两个宫殿,两个守卫换班的时候还挺有意思的。

       下午去了银座,就是日本最繁华的地方,toshiba的总部就在这里。还看到了歌舞伎馆。

       晚上去了新宿,这里主要是购物的地方,比如数码产品,都说日本相机便宜,很想买一部,不过看了一下好像比国内的还贵。

318

       去上野公园看樱花,因为天气太冷,樱花还没大规模开放,只看到零星的几朵。然后碰到几个中国朋友,用英文让大傻帮忙照相,发现是中国人后聊了一会,其中还有一个内蒙古的老乡呢。

       去机场回家。坐地铁时误入头等车厢,其实只坐了一站,售票员要求我们补票,贵得吓人,跟她们解释了一下,由于沟通困难,最后不了了之了。

 

       7天的旅行总体来说还不错,充分感受了world finals那种处处都非常正规的赛事安排,领略了世界顶级高手的风采,忘不了hilton美妙的自助早餐和东京湾清爽的空气,忘不了那些有着复杂的控制面版的马桶,喜欢那种车停下来让你过马路的感觉。还有,日本的地铁检票系统非常不完善,我一直认为可以轻易的逃票,去机场的时候把地铁票丢在了车上,却轻易的逃了出去,可能像我这样逃票的人不多,不然地铁公司要倒闭了。

April 27

prufer code的应用

 
问题:完全图去掉一条边后有多少个生成树?
 
假设去掉的边为1-n,考虑包含1-n这条边的生成树有多少个,
来看这些生成树的prufer code有什么特点,若节点1成为叶子,
则其一定是编号最小的叶子,与其相连的一定是节点n,于是
prufer code的当前输出为n,且1不在之后的输出中出现。
即prufer code为如下形式:
 
n,.....
1,n,......
...,1,n,...
....
...,1
 
这些code的个数为
(n-1)^(n-3)+sigma[n^i*(n-1)^(n-4-i),n-4>=i>=0]+n^(n-3)
=(n-1)^(n-3)+
  (n-1)^(n-4)*[1-(n/(n-1))^(n-3)]/(1-n/(n-1))+
  n^(n-3)
=(n-1)^(n-3)+(n-1)^(n-3)*[(n/(n-1))^(n-3)-1]+n^(n-3)
=(n-1)^(n-3)+n^(n-3)-(n-1)^(n-3)+n^(n-3)
=2*n^(n-3)
 
所求解为n^(n-2)-2*n^(n-3)=(n-2)*n^(n-3)
 
其实不用prufer code有更简单的解法
考虑每条边在所有生成树中出现的次数之和,
设X为包含某条固定边的生成树的个数,
则:
n^(n-2)*(n-1)=C(n,2)*X
X=2*n^(n-3)
 
最后解为n^(n-2)-X,与前面的结果相同。
 
 
 
 
April 23

坐观gdcpc07

 

第一次以评委身份参加gdcpc,坐在电脑前刷standing确实比自己参赛轻松很多,然而比赛之外的事情却是极度无聊的,一遍又一遍地开机,关机,重启,复制,粘贴,登录,提交,做到想吐。

由于评委工作的失误,本来很水的G题似乎成了比赛的关键,这是我们不愿意看到的,每个评委都有责任,我们都感到很内疚,对所有参赛者表示诚恳地道歉!

说一下我对题目的看法:

B.简单模拟题,比赛全部队伍都通过了,就是送分题,没什么好说的。

I.比较直观地最短路,不过可能有些队不会写最短路,可惜了。

G.相当简单的树遍历,赛前两次讨论题目所有人都认为是水题,没什么说的,因此好多人都大意了,只有一个评委验证了这题的数据,而他的理解与出题者相同,也没有发现题目描述的问题。张大牛他们队在这题上卡了很久,让我一度以为张大牛要去补选了。

C.有实际的应用背景,又需要一点小的优化技巧,作为一个简单题,我觉得C是很不错的。

A.需要用到旋转卡壳的几何题,个人觉得做起来有点麻烦,冠军队在68分钟时一次ac,确实相当强悍,感觉这题给他们赢得了很大的优势,使他们在后面的比赛中始终保持题数优势。ZSU_JustIgnoreUs的领先优势让人很是担心,首先比赛的激烈程度降低了,从个人情绪来讲,很不希望他们夺冠,觉得连续两届冠军对他们没什么好处,也太打击其他大牛们了。当时很希望ZSU_Amino-ac或者ZSU_X能赶上来干掉他们。

F.赛前一直以为是简单的组合数学题,实际情况让人大吃一惊,华师的队在70分钟时过了这题,直到封board前再没人过。比赛完了解了一下情况,很多人以为给出的小知识prufer code是无用信息,just ignore it。如果把题目描述改成用k种字符生成一个长度为n的字符串,问有多少种方法,情况肯定会大不相同。

D.算法题,需要比较强的分析能力,原来出的一个很难的数学题被砍掉后无意间想到了这个题。听说张大牛用堆做的,还是挺有创意的。

H.非常好的广搜题,需要按递增的顺序搜出一些解,做这题要克服思维定势,去年集训时做过类似这样的题(我和肥东开始都用堆做,狂超时)。通常的想法是用堆来维护,如果维护一个大小为K的堆就会超时,维护一个大小为C的堆可以接受,更简单更快的实现方法是复杂度为O(KC)的,不需要用堆,bug就是这样做的。

J.赛前出题者说是简单搜索,结果只有一个队过,不知道了,对搜索没兴趣。

E.Inkfish精心构造的难题,据说很难,没敢看。

      

计协的工作人员和送气球的mm们都觉得比赛太沉闷了,后面没什么气球送,只能期

待明年能做得更好了。还是要祝贺一下JustIgnoreUs,可以yy一下你们组一队去分区赛会怎样。值得一提的是,我们班的队得了三个第一,一等奖倒数第一,三等奖第一,成功参与奖第一,也祝贺他们。前十名又出现了一些新面孔,ZSU_YJ_BIG_ROBBERZSU_CA140+saysWCsaysFangMMsays,希望他们都能进入集训队,尤其是fangmm,集训队已经n年没有女生了,加油啊!由于评委的失误导致心灵受到极大伤害的同学们,希望你们能振作起来,对于有志进入中大集训队的同学们来说,gdcpc只是一个小小的无关紧要的开始,真正的挑战还在后面呢。