酒厂选址

【问题描述】
戒酒岛的居民们酷爱一种无酒精啤酒。以前这种啤酒都是从波兰进口,但今年居民们想
建一个自己的啤酒厂。岛上所有的城市都坐落在海边,并且由一条沿海岸线的环岛高速路连
接。酒厂的投资者收集了关于啤酒需求量的信息,即每天各城市消费的啤酒桶数,另外还知
道相邻城市之间的距离。每桶啤酒每英里的运费是1 元。日运费是将所需要的啤酒从酒厂运
到所有城市所必需的运费之和,日运费的多少和酒厂的选址有关,投资者想找到一个合适的
城市来修建酒厂,以使得日运费最小。
读入城市的数目、相邻两城市间的距离以及每个城市消费的啤酒桶数,计算最小的日运
费。
【输入】
第一行是一个正整数 n ,表示城市的数目。城市沿高速路编号,使得相邻的城市的编
号也相邻(城市1 和n 也被认为是相邻)。
以下 n 行,每行有两个非负整数。第 i+1 行的数 zi、di 分别是城市 i 每日的啤酒消
费量(桶)和从城市 i 沿高速路到下一个城市的距离(英里)。
【输出】
一行一个整数,表示所需的最小日运费(元)

【数据范围】
数据范围:5<=n<=10000,高速路的总长不会超过1000000 英里,每座城市的日消费量
不会超过1000 桶。

 

 

题解:见代码注释

//算法:前缀和 
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int f_l;
int all;//all表示公路总长度 
long long ans=2305843009213693951;//ans表示答案,取long long极限值 
struct Bro//bro结构体包含城市的编号,前缀和,订酒量和与下一个城市的距离 
{
    int num;
    int bear,far;//当前城市订酒量和与下一个城市的距离 
    int allfar,allfar2;//城市的距离前缀和(allfar是到城市1,allfar2是到城市n) 
};
Bro a[11000];
int main()
{
    freopen("bro.in","r",stdin);
    freopen("bro.out","w",stdout);
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        a[i].num=i;
        scanf("%d%d",&a[i].bear,&a[i].far);
        a[i].allfar=a[i-1].allfar+a[i-1].far;//算到一号城市的前缀和 
        all+=a[i].far;
    }
    f_l=a[n].far;
    for(int i=n;i>=1;i--)
    {
        a[i].allfar2=a[i+1].allfar2+a[i+1].far;//算到n号城市的前缀和 
    }
    for(int i=1;i<=n;i++)
    {
        long long cnt=0;
        for(int j=1;j<=n;j++)
        {
            if(i==j) continue;//如果酒厂就建在城市i,不用运输费 
            if(i<j)
            {
                //如果i在酒厂前面,看i~j近还是j~n~1~i近 
                cnt+=min(a[j].allfar-a[i].allfar,all-(a[j].allfar-a[i].allfar))*a[j].bear;
            }
            if(i>j)
            {
                //如果i在酒厂后面,看j~i近还是i-n-1-j近 
                cnt+=min(a[i].allfar-a[j].allfar,all-(a[i].allfar-a[j].allfar))*a[j].bear;
            }
        }
        ans=min(ans,cnt);//打擂台 
    }
    printf("%lld",ans);
    return 0;
}
/*
6
1 2
2 3
1 2
5 2
1 10
2 3
*/

 

转载于:https://www.cnblogs.com/chen-1/p/9821476.html

### 回答1: 工厂选址是一个复杂的问题,需要综合考虑多个因素。在Matlab中可以通过以下步骤进行工厂选址: 1. 收集相关数据:包括工厂所需的原材料、产品的销售市场、运输成本、人工成本等信息。 2. 确定决策变量和目标函数:决策变量可以是工厂选址的具体位置、设备的规模等。目标函数可以是最小化总成本、最大化利润等。 3. 建立模型:根据收集到的数据和目标函数,建立数学模型。 4. 模型求解:利用Matlab中的优化工具箱,对模型进行求解。 5. 结果分析:分析求解结果,对工厂选址方案进行评估和优化。 需要注意的是,工厂选址问题是一个涉及到多个因素和变量的复杂问题,在实际应用中需要考虑实际情况进行调整和优化。 ### 回答2: Matlab是一个功能强大的工具,可以用于进行工厂选址分析。首先,我们需要确定一些关键的因素,这些因素可能包括物流成本、人力资源、市场需求、土地成本、政策环境等。然后,我们可以使用Matlab的数学建模工具,对这些因素进行量化和分析。 对于物流成本,我们可以使用Matlab的优化工具,以最小化物流成本为目标函数,考虑到运输距离、运输方式、货物数量等因素进行建模和计算。使用线性规划、整数规划或约束优化等方法可以得到最优解。 对于人力资源,我们可以使用Matlab的数据处理和统计工具,对人口、教育水平、薪酬水平等因素进行分析和建模。然后可以利用聚类、回归分析等方法,找到人力资源优势地区,并根据这些地区的人口分布和劳动力市场情况进行选择。 在考虑市场需求时,我们可以利用Matlab的数据分析工具,对市场规模、消费习惯、竞争对手等因素进行分析和预测。然后可以使用聚类、时间序列分析等方法,找到潜在的市场增长地区和消费者群体,为工厂选址提供依据。 考虑土地成本时,我们可以使用Matlab进行土地价格的统计和分析,找到土地价格较低的地区。同时,我们还可以结合土地的规划和产业政策等因素,利用空间数据分析工具,在城市规划的范围内进行工厂选址分析。 最后,我们还可以利用Matlab进行灵敏度分析和风险评估,考虑到各个因素的变化对工厂选址方案的影响。 ### 回答3: 在进行工厂选址时,可以利用MATLAB进行一些分析和决策支持。首先,我们可以通过MATLAB的统计工具来分析和预测潜在工厂选址的市场需求和潜在竞争对手的情况。通过对历史数据和相关市场数据的统计分析,可以对未来的需求进行预测,以此来指导工厂选址的决策。 其次,我们可以利用MATLAB的地理信息系统(GIS)工具来分析潜在选址的地理条件。通过分析土地的地形、气候等因素,可以评估选址的适宜程度。例如,利用MATLAB的GIS工具可以计算选址周边的设施密度、交通网络等,从而评估选址的便利性和可用性。 此外,MATLAB还可以用于进行对各种选址因素的综合评估和决策。通过建立选址评估模型,将各种因素进行加权和综合,可以得到每个潜在选址的综合得分,从而指导最终选址的决策。同时,MATLAB的优化工具还可以帮助我们解决多目标决策问题,如在满足需求最大化和成本最小化的前提下进行选址。 总而言之,MATLAB可以作为一个强大的工具,在工厂选址中发挥重要的作用。通过其统计、分析、GIS和优化工具,可以对各种选址因素进行综合分析和评估,指导最终选址的决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值