1. 程式人生 > >[NOIP2004] 蟲食算

[NOIP2004] 蟲食算

tro frame php 好的 例子 位數 分享 strong dfs

建議網頁縮放: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(2n?1n2),但由於很多取值不用O(n2)的時間即可判定為不可行,所以時間會比較短。

具體代碼可以去看那個博客,畢竟我也沒看太明白。

[NOIP2004] 蟲食算