算法竞赛入门
准备算法竞赛的一些练习题心得
良木lins
这个作者很懒,什么都没留下…
展开
-
八数码问题
判重 3种解决方法,给出两种(还一种编码解码法) 1.STL 集合 set<int> vis; void init_lookup_table() { vis.clear(); } int try_to_insert(int s) {//判重 int v = 0; for(int i = 0; i < 9; i++) v = v * 10 + st[s][i]; ...原创 2020-02-08 19:28:57 · 152 阅读 · 0 评论 -
UVa 140 Bandwidth 带宽
“剪枝” --本题的优化方案 可以记录下目前已经找到的最小带宽k。如果发现已经有某两个结点的距离大于或等于k,再怎么扩展也不可能比当前解更优,应当强制把它“剪”掉,就像园丁在花园里为树修剪枝叶一样,也可以为解答树“剪枝(prune)”。 除此之外,还可以剪掉更多的枝叶。如果在搜索到结点u时,u结点还有m个相邻点没有确定位置,那么对于结点u来说,最理想的情况就是这m个结点紧跟在u后面,这样的结点带...原创 2020-02-07 19:37:07 · 135 阅读 · 0 评论 -
UVa 129 Krypton Factor 困难的串
回溯法练习 一个很好地成对检查 #include<cstdio> using namespace std; int n,L,cnt,A[85]; int dfs(int cur) { if(cnt++ == n) { for(int i = 0; i < cur; i++) { if(i % 64 == 0 && i > 0) pr...原创 2020-02-07 18:23:56 · 80 阅读 · 0 评论 -
UVa524 Prime Ring Problem (回溯法练习)
UVa524 Prime Ring Problem (回溯法练习) 一些训练时候的小心得,记录记录。 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int is_prime(int x) { //这个判断素数的函数很好有意思 for(int i =...原创 2020-02-07 16:48:34 · 84 阅读 · 0 评论