2937: [Poi2000]建造酿酒厂

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 70  Solved: 24
[Submit][Status][Discuss]

Description

Abstinence岛上的居民很喜欢饮用纯酿的啤酒。迄今为止,他们都是从波兰进口啤酒,自己不生产。但今年岛上的一个城市决定建造一个酿酒厂,供给其他城市的啤酒需求。
岛上所有的城市都环绕在海岸线上,相邻两城之间用高速公路连接(也就是说,它们近似分布在一个圆上)。对于建造酿酒厂的城市来说,它将得到的信息是其余城市对于啤酒的日需求量,并且还有一张记载着相邻两城市之间距离的表格。经过计算,每一桶啤酒每英里的运费为一泰勒。每天的成本为所有城市的运费之和,前提是每个城市的日需求量必须得到满足。可以看出,日成本与酿酒厂建造位置是息息相关的。我们的问题是:为投资者找出最理想的酿酒厂位置,使得日成本最小。

Input

第一行包含一个数n,为城市数目,5<=n<=10000(我们假设城市已经沿着海边高速公路顺序编号,为1,2,……,n,对于1<=i<n,编号为i的城市的下一个城市为i+1,而n号城市的下一个城市为1号)。接下来的n行每行包含两个数字。第i+1行的两个数字为,,表示的是i号城市的日需求量,则表示i号城市与它的下一个城市之间的距离(单位:英里)。海边高速公路的总长度不大于1000000英里,所有城市啤酒的日需求量不大于1000。

Output

仅包含一个数,为所求最小的日成本。

Sample Input

6
1 2
2 3
1 2
5 2
1 10
2 3

Sample Output

41

HINT

Source

Solution

首先展环为链,那么对链进行系列操作就好

发现这个题..其实就是处理前缀和..那么预处理出前缀和..

然后枚举一下即可..其实就是找转折点.. 看逆时针走近还是顺时针走近..

这样乱搞一下就好了..

有一点点坑点.最容易的当然是计算的时候转long long..

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=; char ch=getchar();
while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
return x*f;
}
#define maxn 10100
int n,need[maxn<<],dis[maxn<<];
long long sumn[maxn<<],sumd[maxn<<];
int main()
{
n=read();
for (int ne,dd,i=; i<=n; i++)
ne=read(),dd=read(),need[i+n]=need[i]=ne,dis[i+n]=dis[i]=dd;
for (int i=; i<=n<<; i++) sumn[i]=sumn[i-]+need[i];
for (int i=; i<=n<<; i++) sumd[i]=sumd[i-]+dis[i-];
long long ans=,tmp; int po=;
for (int i=; i<=n; i++) ans+=(long long)need[i]*min(sumd[i],sumd[+n]-sumd[i]);
for (;sumd[po+]<sumd[n+]-sumd[po+]; po++);
tmp=ans;
for (int i=; i<=n; i++)
{
tmp+=(long long)dis[i-]*(sumn[n+i-]-sumn[po]-(sumn[po]-sumn[i-]));
for(;sumd[po+]-sumd[i]<sumd[n+i]-sumd[po+];po++)
tmp+=(long long)need[po+]*(sumd[po+]-sumd[i]-(sumd[n+i]-sumd[po+]));
ans=min(ans,tmp);
}
printf("%lld\n",ans);
return ;
}

long long什么的..早就被坑的稀烂了..当然不会再犯

【BZOJ-2937】建造酿酒厂 前缀和 + 展环为链 + 乱搞的更多相关文章

  1. 【BZOJ 2322】[BeiJing2011]梦想封印 利用"环基"+线性基特征值

    很容易想到离线加边并且把环和链拆开搞(就是对于每个终点求出起点到他的路径(其实就是dfs树),然后bzoj2115),而且维护也很简单,然而我们发现不同的终点可能得到相同的值,这就是我们遇到的最大的问 ...

  2. BZOJ 4898 [APIO2017] 商旅 | SPFA判负环 分数规划

    BZOJ 4898 [APIO2017] 商旅 | SPFA判负环 分数规划 更清真的题面链接:https://files.cnblogs.com/files/winmt/merchant%28zh_ ...

  3. P1880 [NOI1995]石子合并 区间dp+拆环成链

    思路 :一道经典的区间dp  唯一不同的时候 终点和起点相连  所以要拆环成链  只需要把1-n的数组在n+1-2*n复制一遍就行了 #include<bits/stdc++.h> usi ...

  4. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

  5. 图论 公约数 找环和链 BZOJ [NOI2008 假面舞会]

    BZOJ 1064: [Noi2008]假面舞会 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1655  Solved: 798[Submit][S ...

  6. BZOJ 4236 "JOIOJI"(前缀和+map+pair)

    传送门: [1]:BZOJ [2]:洛谷 •题解 定义数组 a,b,c 分别表示 'J' , 'O' , 'I' 的前缀和: 要想使区间 (L,R] 满足条件当且仅当 a[R]-a[L] = b[R] ...

  7. bzoj 5369: [Pkusc2018]最大前缀和

    Description 小C是一个算法竞赛爱好者,有一天小C遇到了一个非常难的问题:求一个序列的最大子段和. 但是小C并不会做这个题,于是小C决定把序列随机打乱,然后取序列的最大前缀和作为答案. 小C ...

  8. BZOJ 4236 JOIOJI(前缀和)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4236 [题目大意] 给出一个只包含三种字母的字符串,求出三种字母数量相等的最长子串 [ ...

  9. bzoj 1702 贪心,前缀和

    [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 807  Solved: ...

随机推荐

  1. xhprof使用笔记(非原创)

    [作用] xhprof是facebook开源的一个php性能分析工具. [安装] xhprof扩展的安装: wget   http://pecl.php.net/get/xhprof-0.9.2.tg ...

  2. 微软职位内部推荐-Senior Software Engineer_Azure

    微软近期Open的职位: Job Title: Senior Software Engineer Location: Shanghai, China Have you ever imagined th ...

  3. Cordova - 使用Cordova开发iOS应用实战1(配置、开发第一个应用)

    Cordova - 使用Cordova开发iOS应用实战1(配置.开发第一个应用) 现在比较流行使用 html5 开发移动应用,毕竟只要写一套html页面就可以适配各种移动设备,大大节省了跨平台应用的 ...

  4. 树莓派Odroid等卡片式电脑上搭建NAS教程系列5-Samba服务器安装

    本文章首发于浩瀚先森博客,地址: http://www.guohao1206.com/2016/08/23/967.html samba时一款为了实现linux系统中的文件能在windows系统中正常 ...

  5. 关于开发中 hosts 文件的修改

    这篇文章只是给自己做个笔记吧. 最近的工作经常要改 hosts 文件(C:\Windows\System32\drivers\etc\hosts),并且改完后不立即生效.小胡子哥 提到: 因为服务器设 ...

  6. StackExchange.Redis--纯干货喂饱你

    Redis和StackExchange.Redis redis有多个数据库1.redis 中的每一个数据库,都由一个 redisDb 的结构存储.其中,redisDb.id 存储着 redis 数据库 ...

  7. 大新闻!HoloLens即将入华商用

    昨天微软搞了大新闻,Terry和Alexi到了深圳,在WinHEC大会上宣布了2017上半年HoloLens正式入华商用. 关于HoloLens的技术原理和细节官方文档和报道已经披露很多了,他是一款真 ...

  8. JQuery fullCalendar 时间差 排序获取距当前最近的时间。

    let time = (wo: WoDto) => wo.ScheduleTime || wo.ScheduleStartTime; let wo = technician.wos .filte ...

  9. memcache 安装

    1 下载两个文件 wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz wget http://www.monkey.org/ ...

  10. redis HA高可用方案Sentinel和shard

    1.搭建redis-master.redis-slave以及seninel哨兵监控 在最小配置:master.slave各一个节点的情况下,不管是master还是slave down掉一个,“完整的” ...