美文网首页
挑战程序设计竞赛2 算法与数据结构5.6

挑战程序设计竞赛2 算法与数据结构5.6

作者: 百炼 | 来源:发表于2019-02-09 15:30 被阅读0次

    5.6 搜索的应用----计算最优解

    package main
    
    import (
        "fmt"
        "os"
    )
    var n, k int
    var MAX = 100000
    var T = make([]int64, MAX)
    
    //k辆车最大能运载为P的卡车能装多少货物
    func check(P int64) int {
        var i int
        for j := 0; j < k; j++ {
            var s int64
            for s+T[i] <= P {
                s += T[i]
                i++
                if i == n {
                    return n
                }
            }
        }
        return i
    }
    func solve() int64 {
        var left, right, mid int64 = 0, 100000*10000, 0
    
        for right-left > 1 {
            mid = (left + right) / 2
            v := check(mid)
            if v >= n {
                right = mid
            } else {
                left = mid
            }
        }
        return right
    }
    //初始化程序,设置从文件读取
    func init()  {
        out, _ := os.OpenFile("./challenge/5_6.out", os.O_WRONLY|os.O_CREATE,0755)
        fin, _ := os.OpenFile("./challenge/5_6.in", os.O_RDONLY,0755)
        os.Stdout = out
        os.Stderr = out
        os.Stdin=fin
    }
    func main() {
        fmt.Scanf("%d %d", &n, &k)
        for i := 0; i < n; i++ {
            fmt.Scanf("%d", &T[i])
        }
        ans := solve()
        fmt.Println(ans)
    }
    

    相关文章

      网友评论

          本文标题:挑战程序设计竞赛2 算法与数据结构5.6

          本文链接:https://www.haomeiwen.com/subject/pcxzsqtx.html