zoukankan      html  css  js  c++  java
  • hdu 1548 A strange lift(优先队列)

    简单的优先队列,原来没学觉得还是不好做(貌似原来题目都没咋搞懂!!!)

    今早遇见果断拿下!!!


    清早水一道吧!(再过两天想回家看看,集训一个多月了,咋说呢!说累不累,就是不想了!!!)

    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


    废话:优先队列就是好用啊!优先!!!在这个世界大多数问题都是最值问题,要么最差,要么最好,呵呵,而优先队列无疑是不错的哦!嘿嘿·······)


    #include<stdio.h>

    #include<string.h>
    #include<queue>
    using namespace std;


    int start,end,n;
    int a[500],visit[500];
    struct node
    {
    int x,time;
    friend bool operator<(node a,node b)
    {
    return a.time>b.time;
    }
    };


    int dfs()
    {
    priority_queue<node>q;
    node cur,next;
    cur.x=start;
    cur.time=0;
    q.push(cur);
    visit[start]=1;
    while(!q.empty())
    {
    next=q.top();
    q.pop();
    if(next.x==end)
    return next.time;
    if(next.x+a[next.x]<=n&&visit[next.x+a[next.x]]==0)
    {
    cur.time=next.time+1;
    cur.x=next.x+a[next.x];
    q.push(cur);
    visit[next.x+a[next.x]]=1;
    }
    if(next.x-a[next.x]>=1&&visit[next.x-a[next.x]]==0)
    {
    cur.time=next.time+1;
    cur.x=next.x-a[next.x];
    q.push(cur);
    visit[next.x-a[next.x]]=1;
    }
    }
    return -1;
    }


    int main()
    {
    int i,ans;
    while(scanf("%d",&n),n)
    {
    memset(visit,0,sizeof(visit));
    scanf("%d%d",&start,&end);
    for(i=1;i<=n;i++)
    scanf("%d",&a[i]);
    ans=dfs();
    printf("%d ",ans);
    }
    return 0;

    }

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1548


  • 相关阅读:
    Google Guava官方教程(中文版)
    maven POM.xml 标签详解
    Linux内存文件系统tmpfs(/dev/shm)详细介绍
    linux 如何查看目录的剩余空间大小?
    CSS position绝对定位absolute relative
    java 笔记
    js笔记
    AFNetworking监控网络状态以及下载的进度条显示
    HTTPS网络请求时plist文件的设置
    KVO监测tableView的滑动
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3268777.html
Copyright © 2011-2022 走看看