USACO算法系列二十七——cryptcow

      题目: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的编译器,跟微软的自带编译器有点不一样,第一次出现本地编译通过,服务器编译不通过的情况。

    

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值