第一题 The Castle
算法:求连通分量的个数
题目给出的形式很好,没有以强的形式给出,而是以1,2,4,8来对应二进制给出,还要打墙~~~
难点1:怎样判断有没有墙?
位运算可以发挥作用了!
难点2:怎样敲墙?
由于题目中有西是最优的,其次是南,所以枚举的顺序有关系;其次,要先敲N,再去敲E,可以写两个FOR,也可以把它过程化;
小细节:敲的时候两边要属于不同的连通分量啊!
这道题目比以前的代码大大缩减,只有60++,很高兴!
小问题:maxarea >?= s[number] 在USACO上编译不能通过?
第二题:Ordered Fractions
题目意思很明白,第一反映排序,而且NLOGN排序可以过,于是没想其他方法,就上了。
看了Analysis后,Russ有一种递归直接生成解的方法,很厉害啊。
第三题:Sorting A Three-Valued Sequence
这道题很水,先两个尽量交换,剩下的只能三个交换了,由于最终的排列是给定的,所以只需O(N)的时间
第四题:Healthy Holstein
最多也只有15种饲料,0/1枚举也就32768种,能承受,如果用二进制来构造方案统计的效率比较低,所以还是用DFS了来构造选择方案比较划算
小技巧:记录选择的方案不需要一个数组,只需一个二进制数来记录,方便,快速,给力!
第五题:Hamming Codes
要用到位运算来获取第N位二进制数的操作;另外可以先预处理出所有数对之间的距离,我想数据本身就不太大,不预处理了,还浪费空间,时间还是挺可以的
好久闲着了,今天下午+晚上间歇得把2.1写完了,还是有收获的,明天晚上就要动身去学校了,短暂的寒假结束了,准备迎接新一轮的挑战吧!