zoukankan      html  css  js  c++  java
  • 小赛旅游

    题目描述(图论)

    小赛很想到外面的世界看看,于是收拾行装准备旅行。背了一个大竹筐,竹筐里装满了路上吃的,这些吃的够它走N公里。为了规划路线,它查看了地图,沿途中有若干个村庄,在这些村庄它都可以补充食物。但每次补充食物都需要花费时间,在它竹筐的食物足够可以走到下一个村庄的时候它就不用补充,这样背起来不累而且不花费时间。地图上可以看到村庄之间的距离,现在它要规划一下它的路线,确定在哪些村庄补充食物可以使沿途补充食物的次数最少。你能帮帮小赛吗?

    输入

    第一行有两个数字,第一个数字为竹筐装满可以走的公里数,即N值;第二个数字为起点到终点之间的村庄个数。
    第二行为起点和村庄、村庄之间、村庄和终点之间的距离。
    这些数字都为整数,且范围不能超过一个int型表达的范围。

    输出

    程序输出为至少需要补充食物的次数。

    样例输入

    7 4
    5  6  3  2  2

    样例输出

    2

    破题思路

    涉及的主要判断过程:
    先看不补充粮食能不能到达下一个村庄;
    再看如果不能到达下一个村庄,则补充粮食后能不能到达下一个村庄。
    其它设置:设置一个记录剩余粮食的变量rest。

    程序源码

    import sys
    n,o = list(map(int,sys.stdin.readline().strip().split()))
    distance_list = list(map(int,sys.stdin.readline().strip().split()))
    count = 0
    rest = n
    for i in range(len(distance_list)):
    #先是正常减得到一个初始的剩余值
    rest = rest-distance_list[i]
    #条件一:判断剩余值是否小于0,如果小于则看补充粮食后能否到达下一个村庄
        if rest < 0:
            rest = n-distance_list[i]
    #条件二:如果补充粮食后也不能到达下一个村庄,则count即为0
            if rest < 0:
                count = 0
                break
            count += 1
    print(count)
    
  • 相关阅读:
    WPF拖拽文件(拖入拖出),监控拖拽到哪个位置,类似百度网盘拖拽
    开源文字识别软件tesseract
    opencv使用findContours等方法出现内存损坏之类的不能调用问题
    电子白板,控件播放功能,屏幕分享
    设置元素等待
    selenium上传文件的方法
    修改页面信息
    浏览器视口大小查看
    测试文件上传接口
    python 使用requests下载文件
  • 原文地址:https://www.cnblogs.com/wisteria68/p/12358563.html
Copyright © 2011-2022 走看看