ACM 迭代深搜法 Power Calculus

2021-08-04 03:44:05 字數 849 閱讀 7153

滴,集訓第五天打卡。

今天是紫書第七章訓練2,感覺難度很大呀...

a和e是迭代深搜法,c是揹包我首a的哈哈哈哈後續更新~

這裡貼e題..

題目大意:給定乙個數n,讓你求從1至少要做多少次乘除才可以從 x 得到 x^n。

思路:從小到大列舉深度上限,剪枝:(當每次取最大的兩個數相加仍然小於n時要剪枝 。因為以最快的方式增長的話其指數是按照2的冪次增加的,所以當前序列最大的數乘以

2^(maxd-d)

之後仍小於

n,則剪枝 。)

#includeint vis[2010];  

int flag,deep,n;

void dfs(int pos)

t=vis[pos]-vis[i];

if(t>0 && t<2000) //除法

} } int main()

printf("%d\n",deep-1);

} return 0;

}

當然也可以打表做

#include int ans=;

int main()

小結 A IDA 迭代深搜

在dfs中,如果答案的深度很小但是卻很寬,而且bfs還不一定好做的情況下,我們就綜合bfs的優點,結合dfs的思想,進行有限制的dfs。在這裡a ida 和迭代深搜都是對dfs的優化,因此放到一塊小結。a 的概念主意在於估計函式,f n g n h n f n 是估計函式,g n 是n節點的當前代價...

acm基礎1 深搜與寬搜

deep first search void dfs adjlist adj,int v,int visited adj is a adjlist,v is the no.of first point,visited is a assistant array int i struct edgenod...

CSU2087 迭代深搜dfs

思路 dfs,用vowel記錄連續的母音字母,用consonant記錄連續的子音字母,深搜字串的位置 str i 的i 用cnt存悲劇詞的個數,最後用t判斷字串中是否含 l include include include include includeusing namespace std stri...