zoukankan      html  css  js  c++  java
  • 枚举法

    题意:

            长为L的月台上有M个人,每人与月台左端距离为Pi,有一列N个门的火车,每个门与最左端的距离为Di。已知每个人会选择离自己最近的车门上车,求火车停靠什么位置能使得所有人的移动距离和最大。

    输入:

            第一行位L,M,N,第二行为Pi,第三行为Di。

    输出:

            火车停靠的位置和所有人移动的最长距离和。

            要使乘客移动距离最大,则应尽量使更多的乘客正对两个车门中央。初始时,最少可保证一个乘客正对车门中央,然后枚举所有满足此条件火车停靠的位置,计算最大移动距离。当火车停靠最左或最右端时,无法保证上述条件,所以要单独计算,最后与answer比较大小。

    #include<iostream>
    #include<cstdlib>
    using namespace std ;

    int n, m, people[1000], door[1000] ;

    int count(int s){                          //计算停靠s位置时乘客移动的距离
        int sum = 0, p = 1, i ;
        for(i=1; i<=m; i++){
            while(p<n&&abs(door[p+1]+s-people[i])<abs(door[p]+s-people[i]))
                p ++ ;
            sum += abs(door[p]+s-people[i]) ;
        }
        return sum ;
    }

    int main(){
        int answer = -1 ;
        int i, j, l, d, p, s ;
        cin >> l >> m >> n ;
        for(i=1; i<=n; i++)
            cin >> people[i] ;
        for(i=1; i<=m; i++)
            cin >> door[i] ;
        for(i=1; i<=n-1; i++)           //至少一个乘客正对某车门
            for(j=1; j<=m; j++){
                s = people[j]-(door[i]+door[i+1])/2 ;
                if(s>=0&&s+door[n]<l){
                    d = count(s) ;
                    if(d>answer){
                        answer = d ;
                        p = s ;
                    }
                }
            }
        d = count(0) ;          //火车停靠月台左端
        if(d>answer){
            answer = d ;
            p = 0 ;
        }
        d = count(l-door[n]) ;      //火车停靠月台右端
        if(d>answer){
            answer = d ;
            p = l - door[n] ;
        }
        cout << p/2 << " " << answer/2 << endl ;
        return 0 ;
    }

  • 相关阅读:
    图解Http协议 url长度限制
    cpu占用工具,亲测可用
    python使用mysql 获取数据,感知不到数据变化的原因
    dns压测工具dnsperf
    sqlalchemy.exc.ArgumentError: Mapper mapped class Result->result could not assemble any primary key 报错解决
    DevTools failed to load SourceMap: Could not load content for chrome-extension 解决
    tcp/udp 的一些测试
    win端 vscode 远程连接 centos,配置调试
    gitllab访问报错:Permission denied (publickey). 以及后续测试
    linux文件表项测试
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2146977.html
Copyright © 2011-2022 走看看