USACO算法系列二十七——cryptcow

来源:互联网 发布:东京地铁 知乎 编辑:程序博客网 时间:2024/05/16 15:29

      题目:http://www.nocow.cn/index.php/Translate:USACO/cryptcow

     好变态的一道题。我现在写出来的程序可以通过7次加密的,但是8次加密的求解有点难度,会超时。毕竟使用的是最笨的回溯算法。

     有几个注意点吧:

     第一, 要优化搜索顺序。经过试验我们可以发现,O的位置对于整个COW至关重要。可以说,O的位置决定了整个串是否会有解。因此,我们在搜索时,应该先枚举O的位置,然后再枚举C和W的位置。而且从O开始感觉思路会清晰很多。

     第二,一个有解的字符串中,COW三个字母最早出现的应该是C,最后出现的应该是W,如果不满足则剪枝。

     第三,对搜索到的字符串,设不包含COW的最长前缀为n前缀(同样也可以定义n后缀),那么如果n前缀不等于目标串的长度相同的前缀,那么当前字符串一定无解,剪枝。N后缀也可采取相同的判断方法。

     还有其他的根据长度,进行粗略判断的。另外别人的解题报告里面还有其他的方式。

     总之大体思路就是回溯剪枝。

     

     另外发现GCC的编译器,跟微软的自带编译器有点不一样,第一次出现本地编译通过,服务器编译不通过的情况。

    

     有时间好好看看这两块的区别。

原创粉丝点击