Something changed?
人和事总是不停地在变。
前段时间都蛮堕落的,每天中午到实验室,然后晚上10点回去,此外的时间都没有用在提高上,其实在实验室的时候,效率也很低。不明白为什么,也许就是有点“腻”了吧。
前一篇日志也写到,这两天已经感觉恢复了。也许和昨天听到教练lcy说的赛点的新安排有关系,最希望去的赛点还是NJTU。而且和T1的差距,也让我明白当机会来临的时候,最有可能抓到的,还是最努力的那些人。平常也许看不出什么,对偶尔好一点的表现就感到满意,表现差了,就拿各种理由安慰自己,而差距就在不经意中慢慢拉开。
好的资料是有的,好的环境也是有的,能不能让这段日子变成美好的回忆而不是像高中那样不堪回首,完全在于我的决心啦。
看google analytics,有一个在广东省的IP好几天一直连续得关注着我的博客,有点感动,呵呵。如果你看到这篇日志了,别吝啬,留个言吧。
TC SRM416
虽然一直都被虐,但真的越来越喜欢TC了,嘿嘿。
前端时间曾经感觉没做题的热情,现在也恢复嘞,加油AC!!
我参加的是DIV2区的比赛,250的题目就不说啦。
500分有些人用全排列做,其实没这个必要,找出规律简单模拟就可以了。
N先化为二进制,然后从低位往高位找第一段连续的1,比如这里有t个1(从低位到高位1…t),那么把第t个1往高位移动一位,原地址用0替代,1到(t-1)个1,移动到最低的t-1位,原位用0替代,就好了。
做掉1000分前先YM和学习了下windy大牛的代码。具体先求出1′s-counting sequence,之后枚举binary weight为K的男孩和女孩数量,然后进行状态DP。我使用一个递归的过程来进行状态DP的,递归函数代码如下:
- int digui(int x,int y) //x,y分别为用二进制表示的男孩和女孩的选中情况
- {
- int i,j;
- if(ret[x][y]!=-1) return ret[x][y];
- ret[x][y]=0;
- for(i=0;i<n;i++)
- if(x&(1<<i)) break;
- for(j=0;j<m;j++)
- if(y&(1<<j))
- if(ma[i][j]==1)
- ret[x][y]+=digui(x^(1<<i),y^(1<<j));
- return ret[x][y];
- }
P.S. 发现SRM变成了日期的另一种形式啦,呵呵。
08-9-1
二分匹配
都说简单,但是还是觉得很难理解,主要是感觉hall定理的定义比较难理解。
找了好久,终于找到一篇讲解得浅显易懂的文章。
imlazy.ycool.com/post.1603708.html
这篇文章中的两幅图把hall定理说明的比较直白,很快就看懂了。
匈牙利算法也是比较简单的
现在发现主要的难点在于如何把一道题目转化为二分匹配问题
我想还是靠做大量的题目吧,下面是一些题目:
HDOJ_1281
| 2008-08-04 16:16:35 | Accepted | 1281 | 0MS | 0K | 985 B | C++ |
HDOJ_1498
| 2008-08-05 11:05:22 | Accepted | 1498 | 62MS | 0K | 1507 B | C++ |
HDOJ_1528
HDOJ_1507
POJ_2724
POJ_3216










