`
mayi_hetu
  • 浏览: 15572 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

poj3278 广搜

    博客分类:
  • poj
阅读更多

/**

广搜,有两点剪枝

1、当人在牛右边时(i>K),只要-1

2、广搜过程不会超过边界100000

          2i超过边界的不可能是最优解
          设边界为2k,假设2i>2k,则2i-2k>=2,到达2k花费时间为2i-2k+1>=3
           而先-1再乘2,到达2k花费时间为(i-k)*2

*/

#include<stdio.h>
#include<queue>
#include<string.h>

#define MAX 150000

using namespace std;

int count[MAX];

int main()
{
    int i,N,K,min;

    queue<int> qu;
    scanf("%d %d",&N,&K);

    if(K<=N){
        printf("%d\n",N-K);
        return 0;
    }

    for(i=0;i<MAX; ++i)
    {
        count[i]=-1;
    }

    qu.push(N);
    count[N]=0;
    while(!qu.empty())
    {
        i = qu.front();
        qu.pop();
        if(i==K)break;
        if(i<K)//剪枝,当i>k时候,只有-1才能到达
        {
            /*
            * 2i超过边界的不可能是最优解
            * 设边界为2k,假设2i>2k,则2i-2k>=2,到达2k花费时间为2i-2k+1>=3
            * 而先-1再乘2,到达2k花费时间为(i-k)*2
            */
            if(i*2<MAX && count[i*2]==-1)
            {
                qu.push(i*2);
                count[i*2] = count[i]+1;
            }

            if(count[i+1]==-1)
            {
                qu.push(i+1);
                count[i+1] = count[i]+1;
            }
        }
        if(i-1>=0 && count[i-1]==-1)
        {
            qu.push(i-1);
            count[i-1] = count[i]+1;
        }
    }
    printf("%d\n",count[K]);
    return 0;
}

 

分享到:
评论

相关推荐

    POJ 1979 Red and Black(广搜与深搜两种解答)

    标题“POJ 1979 Red and Black”是一个编程竞赛题目,主要涉及的问题是算法设计,特别是搜索算法。在这个问题中,广度优先搜索(BFS)和深度优先搜索(DFS)这两种策略被用来解决特定的红黑树相关的问题。红黑树是一...

    POJ_keptsl6_C++_

    描述中的“动态规划、深搜广搜等算法”提到了两种重要的算法类别。动态规划(Dynamic Programming, DP)是一种在计算机科学中解决问题的方法,它通过将复杂问题分解为子问题来求解,通常用于优化问题和计算问题。深度...

    POJ中级图算法所有题目【解题报告+AC代码】

    在编程竞赛领域,POJ(Programming Online Judge)是一个广受欢迎的在线编程平台,它提供了许多题目供参赛者解决,以提升编程和算法能力。本文主要关注的是“POJ中级图算法”的一系列题目及其解题报告和AC(Accepted...

    康拓展开的八数码广搜程序

    康拓展开的八数码广搜程序 解决了搜索不能判断重复的难题 基于poj1077题目制作

    poj解题报告(一百多道题)

    在编程竞赛的世界里,POJ(Problem Set of Peking University)是一个广受欢迎的在线判题系统,它为程序员提供了丰富的算法挑战。这份“POJ解题报告”包含了超过一百道题目的详细解答,涵盖了从基础到高级的各种算法...

    acm 分类 北大

    - 广度优先搜索(BFS):遍历图或树的广分支,如POJ3278。 - 搜索技巧和剪枝:避免无效搜索,如POJ2531。 5. **动态规划** - 背包问题:处理容量限制下的优化问题,如POJ1837。 - 表达式类型的DP:解决具有特定...

    算法竞赛专题解析--搜索进阶(2)剪枝1

    《算法竞赛专题解析--搜索进阶(2)剪枝1》这篇文章主要探讨了在算法竞赛中,如何通过剪枝技术优化搜索算法,提高...后续的文章还会继续探讨双向广搜、迭代加深搜索和A*算法等其他搜索技术,帮助读者全面掌握搜索算法。

    90份poj解题报告

    在编程竞赛的世界里,POJ(Problemset Online Judge)是一个广受欢迎的在线评判系统,它提供了大量的编程题目供参赛者挑战,旨在提升参赛者的算法设计和实现能力。这份"90份POJ解题报告"集合,无疑是一份宝贵的资源...

    浙江大学ACM模板 计算几何,图论,数据结构,经典题的模板

    9.4 优先队列广搜 194 10.应用 197 10.1 Joseph问题 197 10.2 N皇后构造解 197 10.3 布尔母函数 198 10.4 第k元素 199 10.5 幻方构造 199 10.6 模式匹配(kmp) 201 10.7 逆序对数 201 10.8 字符串最小表示 202 10.9 ...

    编程较好的刷题网站.docx

    8. **北京大学POJ**: 北京大学的POJ系统同样是一个经典的ACM训练平台,拥有大量的算法题目,适合编程爱好者进行练习。 这些网站各有特色,可以根据自己的需求和兴趣选择合适的平台进行刷题。在刷题过程中,不仅要...

    ACM新手入门练习题

    POJ(Peking University Online Judge)是一个广受欢迎的在线裁判系统,提供大量的算法题目供参赛者练习。 **重要性:** - **理解比赛规则:** 对于ACM竞赛的基本规则、评分标准等有基本了解。 - **掌握基础算法:*...

Global site tag (gtag.js) - Google Analytics