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. 关于a标签和submit标签

    a如果没有连接“#”:“javascript:void(0)”;或“(胡乱写一堆)” 这两个标签点击都有刷新功能,所以会清空你的数据.

  2. WEBAPI 怎么保证安全

    先记录下   客户端登陆,服务端验证然后生成session,客户端每次调用接口的时候都把session带过去.服务端路由请求的时候都去验证session. 另外一种app的做法是,参数+用户名密码做s ...

  3. 黑暗圣经---物业公司CTO/CEO改如何给老板推荐物业信息化产品

    多年前一次偶然的机会进入到物业信息化行业,在这个过程中认识很多奋战在物业一线的技术大牛.很多时候都会介绍一些朋友给我认识一下,帮我推荐一下我们闻风多奇的物业管理平台.很多朋友看完我们的系统之后都会很开 ...

  4. unix环境高级编程基础知识之第二篇(3)

    看了unix环境高级编程第三章,把代码也都自己敲了一遍,另主要讲解了一些IO函数,read/write/fseek/fcntl:这里主要是c函数,比较容易,看多了就熟悉了.对fcntl函数讲解比较到位 ...

  5. We Know What @You #Tag: Does the Dual Role Affect Hashtag Adoption-20160520

    分析类的论文 1.Information publication:www2012 author: Mei qiao zhu 2.What 微博中的hashtag既可以表示谈论的内容,又可以代表一个群体 ...

  6. android之短信拦截器

    下面通过短信拦截器来介绍短信中的广播 布局文件 在布局文件中可以设置需要拦截的号码 <?xml version="1.0" encoding="utf-8" ...

  7. Python基础-函数篇

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数  函数与函数式编程 1.面向对象: 华山派-- ...

  8. Android 轻量级输入校验库:Fire Eye

    Fire Eye是一款轻量级简单易用的Android校验库. FireEye 2.0 在 1.0 的基础上,全部重写了代码,并优化了架构,性能上和逻辑上都大大提升.只需要几行代码,即可验证用户输入,并 ...

  9. datePiker弹出框被其他div遮挡

    最近在做项目的时候,datePiker弹出框被下面的div给遮挡住了,以前也碰到过这样类似的问题,之前直接在style中添加"z-index:1000".但是现在使用angular ...

  10. MyBatis学习--延迟加载

    简介 在resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能.例如:我们查询订单并 ...