zoukankan      html  css  js  c++  java
  • TYVJ 2032 搜索

    P2032 「Poetize9」升降梯上
    描述
    开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道、一辆停在轨道底部的电梯、和电梯内一杆控制电梯升降的巨大手柄。
    Nescafe之塔一共有N层,升降梯在每层都有一个停靠点。手柄有M个控制槽,第i个控制槽旁边标着一个数Ci,满足C1< C2< C3 < ……< CM。如果Ci>0,表示手柄扳动到该槽时,电梯将上升Ci层;如果Ci<0,表示手柄扳动到该槽时,电梯将下降-Ci层;并且一定存在一个Ci=0,手柄最初就位于此槽中。注意升降梯只能在1~N层间移动,因此扳动到使升降梯移动到1层以下、N层以上的控制槽是不允许的。
    电梯每移动一层,需要花费2秒钟时间,而手柄从一个控制槽扳到相邻的槽,需要花费1秒钟时间。探险队员现在在1层,并且想尽快到达N层,他们想知道从1层到N层至少需要多长时间?

    输入格式
    第一行两个正整数N、M。
    第二行M个整数C1、C2……CM。

    输出格式
    输出一个整数表示答案,即至少需要多长时间。若不可能到达输出-1。

    测试样例1

    输入

    6 3
    -1 0 2

    输出

    19

    备注

    手柄从第二个槽扳到第三个槽(0扳到2),用时1秒,电梯上升到3层,用时4秒。
    手柄在第三个槽不动,电梯再上升到5层,用时4秒。
    手柄扳动到第一个槽(2扳到-1),用时2秒,电梯下降到4层,用时2秒。
    手柄扳动到第三个槽(-1扳倒2),用时2秒,电梯上升到6层,用时4秒。
    总用时为(1+4)+4+(2+2)+(2+4)=19秒。

    对于30% 的数据,满足1≤N≤10,2<=M<=5。
    对于 100% 的数据,满足1≤N≤1000,2<=M<=20,-N < C1< C2< ……< CM < N。

    思路:
    看到这题,第一反应。 搜XXD! 看了看数据范围。。 觉得搜好像会超时。但还是花了20min把一发暴搜写出来了。竟然AC了!代码还很短。
    后来分析了一下原因,发现我在不经意之间加了一个强悍的剪枝。就是把visit数组设成int的,记录到那层的最短时间,如果比它短,则更新,搜它。否则不搜它。

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    int n,m,c[66],ans=1000000,si,v[1005];
    void dfs(int x,int t,int ii)
    {
        if(x==n)
            ans=min(ans,t);
        for(int i=1;i<=m;i++)
        {
            if(x+c[i]>=1&&x+c[i]<=n&&c[i]&&v[x+c[i]]>t+abs(ii-i)+abs(c[i])*2)
            {
                v[x+c[i]]=t+abs(ii-i)+abs(c[i])*2;
                dfs(x+c[i],t+abs(ii-i)+abs(c[i])*2,i);
            }
        }
    }
    int main()
    {
        memset(v,0x3f,sizeof(v));
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++)
        {
            scanf("%d",&c[i]);
            if(c[i]==0) si=i;
        }
        dfs(1,0,si);
        if(ans!=1000000)printf("%d",ans);
        else printf("-1");
    }

    这里写图片描述

  • 相关阅读:
    Kotlin 基础
    ViewPager2
    8086-debug指令
    (四)主控板改IP,升级app,boot,mac
    (三)主控板生级uboot与内核
    (四)linux网络编程
    (七)嵌入式系统异常程序远程定位
    (六)ARM状态寄存器-PSR
    (五)stm32工程代码HardFault异常查错调试方法
    (十)makefile
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532506.html
Copyright © 2011-2022 走看看