TCHS SRM 1
2008-04-14 23:33 老博客哈 阅读(1070) 评论(1) 编辑 收藏 举报
http://www.topcoder.com/tc?module=Static&d1=hs&d2=match_editorials&d3=hs_srm1
题解:
1. SpeedRadar
水题
2. SymbolFrequency
模拟
3. TrotownKeeper
i) 如果直接做,可以对迷宫的四周的'.'的位置进行dfs,并进行标记,
最后再用二重循环检查每一个'#',如果与它相邻的部分超过了边界或者是已经
标记过的'.',则将总的paint数目增加1
ii) 比较好的做法是在迷宫的一周增加'.',这样总的paint数目其实就是从(0,0)开始在dfs过程中
碰到的'#'的数目。这个"加圈"的做法是一个经常使用的技巧。
总结:
1. 在需要进行强制转化成double的时候,可以用*1.0或者+0.0的小技巧
2. 在不需要下标操作的时候,foreach打字要比for少一点
3. 通常在知道范围在'a'-'z'或者'A'-'Z'的时候,用int []要比Dictionary<char, int>要方便一点
4. C#中的string 不好修改其中的元素值, 例如: string a = "China"; a[0] = 'c';
5. 成员变量在函数调用前记得初始化, 这个在用TZTester的时候要注意
这个算是我最近开始训练的一个标志吧,发现好久不做题,手生的不得了。刀要磨,脑也要转转~
题解:
1. SpeedRadar
水题
2. SymbolFrequency
模拟
3. TrotownKeeper
i) 如果直接做,可以对迷宫的四周的'.'的位置进行dfs,并进行标记,
最后再用二重循环检查每一个'#',如果与它相邻的部分超过了边界或者是已经
标记过的'.',则将总的paint数目增加1
ii) 比较好的做法是在迷宫的一周增加'.',这样总的paint数目其实就是从(0,0)开始在dfs过程中
碰到的'#'的数目。这个"加圈"的做法是一个经常使用的技巧。
总结:
1. 在需要进行强制转化成double的时候,可以用*1.0或者+0.0的小技巧
2. 在不需要下标操作的时候,foreach打字要比for少一点
3. 通常在知道范围在'a'-'z'或者'A'-'Z'的时候,用int []要比Dictionary<char, int>要方便一点
4. C#中的string 不好修改其中的元素值, 例如: string a = "China"; a[0] = 'c';
5. 成员变量在函数调用前记得初始化, 这个在用TZTester的时候要注意
这个算是我最近开始训练的一个标志吧,发现好久不做题,手生的不得了。刀要磨,脑也要转转~