[NOIP2004] 虫食算

建议网页缩放:250%

 

题目:(传送门

从数据量来看,N≤26,也就是最多26个字母,26进制,26位数

第一个想到的肯定是直接爆搜

算一下时间复杂度为 O(N!) 显然不可取。

但很明显可以看出来,有大量的是可以直接排除的,或者说是不存在的。

那么按照加法竖式,从低位往高位。

例如样例C+A=C,那么一算就知道A是0.

举个例子若最后一位A+B=C (mod 10),那么在搜索的时候所有A+B≠C (mod 10)的情况就可以直接舍去

那这么一看我们就把搜索剪剪枝。

就可以过了。

 

dfs+剪枝

 

------------------------------分割线--------------------------

好的接下来是从网上看到的一种方法。

先把原网址放在这里。

高斯消元+dfs

据称时间复杂度是O( 2(n-1) * n2  

但博主原话是:总的时间复杂度变为O(2n1n2),但由于很多取值不用O(n2)的时间即可判定为不可行,所以时间会比较短。

具体代码可以去看那个博客,毕竟我也没看太明白。

 

posted @ 2018-02-26 20:29  三岁小白四个白x  阅读(191)  评论(0)    收藏  举报