首页 > 其他分享 >虫食算

虫食算

时间:2024-02-18 23:33:23浏览次数:12  
标签:遍历 食算 确定 前列 搜索 进位

这道题目能学的东西,能复习的东西还是挺多的

首先什么是\(n\)进制加法?就是把逢十进一变成了逢\(n\)进一(注意如果只是加法,只有两个加数,那么任何进制的进位最多就是\(1\),不会更高)

然后我们模仿人类的思维,从右往左进行搜索

但是我们要学习数独搜索的思想:遍历一定比递归快

所以我们每进入一个状态时,都要从右往左进行遍历,如果当前列的右边的数都确定了,那么当前列的进位就是确定的;如果当前列的右边的数有不确定的,那么当前列的进位是不确定的

特别是最后这个优化搜索顺序的剪枝非常牛,直接1500ms变成了50ms,之所以更大的数在高位的概率更小,就是因为最高位是没有进位的,而更大的数更容易进位

标签:遍历,食算,确定,前列,搜索,进位
From: https://www.cnblogs.com/dingxingdi/p/18020154

相关文章

  • 4793: 虫食算 noip2004提高组T4 深搜/剪枝
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e3+10,inf=0x3f3f3f3f;charA[N],B[N],C[N];charwords[N];intcnt;charkeys[N];boolvis[N];intn;voidprint(){for(inti=0;i<n-1;i++)pri......