【描述】

海上有一个岛,在环海边上建有一条环岛高速公路,沿着公路有n(5 < n < 10000)个居民点,假设每个居民点有一个编号,从0开始,按顺时针依次从小到大(即,0,1,…,n-1)编号。在岛上啤酒很受青睐。某啤酒企业计划在岛上投资建一个啤酒厂,并根据啤酒需求每天向居住点送啤酒。已知两个相邻的居民点的距离以及每个居住点每天的啤酒需求量(假设每个居住点每天不超过2000桶)。假定每单位长度的路程送一桶啤酒需要的费用恒定(为单位费用)。请问,选择哪一个居民点建啤酒厂,才能使每天送啤酒的费用最小(空车不计费用)。

【输入】

输入第一行:为居民点数目n

后面为n行,每行为一个居民点的啤酒需求量以及按顺时针离下一个居民点的距离(均为整数,空格间隔),从编号为0的开始,按单增顺次给出。

注意:后面第n行对应于居民点(n-1)的啤酒需求量以及到编号为0的居民点距离。输出啤酒厂所在的居民点编号以及每天的运输费用,其间以逗号间隔

【输出】

输出啤酒厂所在的居民点编号以及每天的运输费用,其间以逗号间隔

输入:

输出:
,

输入输出样例

【分析:】

暴力枚举n个点中的每一个点作为起点,计算每个点为起点时的最小花费,打擂找最小值即可

时间复杂度O(n2)

n最大是10000,按计算机每秒能进行一亿次操作(现在的计算机速度远远大于这个值)来算,刚刚好能够卡过

关于如何求出送啤酒的费用,可以利用前缀和来简化算法

求出第i个点到第一个点的距离f(i)(前缀和,1 <= i <= n)

点l、点r的距离就是f(r) - f(l - 1)

len[j]存的是j到j+1的长度,所以乘以第j个居民点需要的啤酒数量时,要从(j-1)点开始算

由于是环岛公路,从点i到点j的走法有两种:

  1. abs(len[j] - len[i - 1])
  2. sum - abs(len[j] - len[i - 1]) (sum为环状公路的总长度)

要从两种走法中选取最小的走法.

【代码:】

 #include<iostream>
#include<cstdio>
using namespace std; const int MAXN = + ;
int n, sum, pos, minn = 0x7fffffff;
int a[MAXN], len[MAXN]; inline int abs(int x) {
return x < ? -x : x;
} int main() {
scanf("%d", &n);
for(int i = ; i <= n; i++) {
scanf("%d%d", &a[i], &len[i]);
sum += len[i];
len[i] += len[i - ];
}
for(int i = ; i <= n; i++) {
int tmp = ;
for(int j = ; j <= n; j++)
//len[j]存的是j到j+1的长度
//所以要从j-1开始算
//i、j大小关系不定,所以要加绝对值
tmp+=min(abs(len[j-]-len[i-]),sum-abs(len[j-]-len[i-]))*a[j];
if(minn > tmp) {
minn = tmp;
pos = i - ;
}
}
printf("%d,%d", pos, minn);
}

from:

http://noi.openjudge.cn/ch0113/19/

【openjudge】【前缀和】P6731啤酒厂选址的更多相关文章

  1. 无线网络发射选址 2014年NOIP全国联赛提高组(二维前缀和)

    P2038 无线网络发射器选址 题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南 ...

  2. luogu2038 [NOIp2014]无线网络发射器选址 (前缀和)

    貌似不用做前缀和也能过? #include<bits/stdc++.h> #define pa pair<int,int> #define CLR(a,x) memset(a, ...

  3. [openjudge] 2797最短前缀 Trie

    描述 一个字符串的前缀是从该字符串的第一个字符起始的一个子串.例如 "carbon"的字串是: "c", "ca", "car&q ...

  4. Codevs 1507 酒厂选址

    1507 酒厂选址 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description Abstinence(戒酒)岛的居民们酷爱一种无酒精啤酒 ...

  5. codevs——1507 酒厂选址

    1507 酒厂选址  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description Abstinence(戒酒) ...

  6. [BZOJ2684][CEOI2004]锯木厂选址

    BZOJ权限题! Description 从山顶上到山底下沿着一条直线种植了n棵老树.当地的政府决定把他们砍下来.为了不浪费任何一棵木材,树被砍倒后要运送到锯木厂. 木材只能按照一个方向运输:朝山下运 ...

  7. P4360 [CEOI2004]锯木厂选址

    P4360 [CEOI2004]锯木厂选址 这™连dp都不是 \(f_i\)表示第二个锯木厂设在\(i\)的最小代价 枚举1号锯木厂 \(f_i=min_{0<=j<i}(\sum_{i= ...

  8. luoguP4360 [CEOI2004]锯木厂选址

    题目链接 luoguP4360 [CEOI2004]锯木厂选址 题解 dis:后缀和 sum:前缀和 补集转化,减去少走的,得到转移方程 dp[i] = min(tot - sumj * disj - ...

  9. 酒厂选址(codevs 1507)

    题目描述 Description Abstinence(戒酒)岛的居民们酷爱一种无酒精啤酒.以前这种啤酒都是从波兰进口,但今年居民们想建一个自己的啤酒厂.岛上所有的城市都坐落在海边,并且由一条沿海岸线 ...

随机推荐

  1. C# Mysql Dapper和原生sql 插入和查询速度比较

    1.表中有三个字段,已经有100多万条数据,每次插入10万条数据 时间单位:秒 秒 Dapper批量Model插入时间:40.6165513,Dapper单条Model插入时间:95.9492972, ...

  2. AngleSharp一些示例

    看到了AngleSharp,感觉这个非常好用,比HtmlAgilityPack感觉好用点 AngleSharp 地址:https://github.com/AngleSharp/AngleSharp ...

  3. Packet for query is too large (5,145 > 1,024). You can change this value on the server by setting the 'max_allowed_packet' variable.

    错误 在使用Mybatis generator时提示MySQL写入过大 Packet for query is too large (5,145 > 1,024). You can change ...

  4. 深入理解MyBatis的原理(一): 独立的入门demo

    前言:不结合spring,只有 mybatis+maven.数据库使用 oracle.不尝试永远不知道会发生什么事,其中遇到两个小问题,也记录下来了.转载请注明出处:https://www.cnblo ...

  5. python数据类型之简单数据类型

    变量使用注意事项 慎用小写字母l和大写字母O,因为它们可能被人看成数值1和0. 应使用小写的python变量名. 字符串 在python中,用引号括起来的都是字符串,其中的引号可以是单引号和双引号. ...

  6. VS2013平台安装Qt插件过程

    1.下载所需安装包: Qt5.3.Qt插件下载地址:http://qt-project.org/downloads. qt-vs-addin-1.1.11-opensource.exe 下载地址:ht ...

  7. 将windows共享文件夹挂载在linux机器的/mnt/windows/ 目录下进行访问

    将windows共享文件夹挂载在linux机器的/mnt/windows/ 目录下进行访问.windows机器ip:192.168.1.101,用户名:XXXX密码:XXXXlinux机器ip:ip2 ...

  8. HTML之列表

    列表有三种类型: 有序列表:列表项使用数字来标记 无序列表:列表项使用粗体圆点(典型的小黑圆圈)进行标记. 自定义列表:自定义列表以 <dl> 标签开始.每个自定义列表项以 <dt& ...

  9. 空间数据的WKT和WKB表现形式

    WKT(well-known text)是一种文本标记语言,该格式由开放地理空间联盟(OGC)制定,用于表示矢量数据中的几何对象,在数据传输与数据库存储时,常 用到它的二进制形式,即WKB(well- ...

  10. [Asp.net mvc]Asp.net mvc 中使用LocalStorage

    目前使用比较多的本地存储方案有比如Flash SharedObject.Google Gears.Cookie.LocalStorage.User Data.Open Database等方案.综合比较 ...