USACO 2.1 分析

第一题 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写完了,还是有收获的,明天晚上就要动身去学校了,短暂的寒假结束了,准备迎接新一轮的挑战吧!

猜你喜欢

转载自blog.csdn.net/zjsxzjb/article/details/6177946
2.1