【BZOJ-2937】建造酿酒厂 前缀和 + 展环为链 + 乱搞
2937: [Poi2000]建造酿酒厂
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 70 Solved: 24
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 2
2 3
1 2
5 2
1 10
2 3
Sample Output
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】建造酿酒厂 前缀和 + 展环为链 + 乱搞的更多相关文章
- 【BZOJ 2322】[BeiJing2011]梦想封印 利用"环基"+线性基特征值
很容易想到离线加边并且把环和链拆开搞(就是对于每个终点求出起点到他的路径(其实就是dfs树),然后bzoj2115),而且维护也很简单,然而我们发现不同的终点可能得到相同的值,这就是我们遇到的最大的问 ...
- BZOJ 4898 [APIO2017] 商旅 | SPFA判负环 分数规划
BZOJ 4898 [APIO2017] 商旅 | SPFA判负环 分数规划 更清真的题面链接:https://files.cnblogs.com/files/winmt/merchant%28zh_ ...
- P1880 [NOI1995]石子合并 区间dp+拆环成链
思路 :一道经典的区间dp 唯一不同的时候 终点和起点相连 所以要拆环成链 只需要把1-n的数组在n+1-2*n复制一遍就行了 #include<bits/stdc++.h> usi ...
- bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞
没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...
- 图论 公约数 找环和链 BZOJ [NOI2008 假面舞会]
BZOJ 1064: [Noi2008]假面舞会 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1655 Solved: 798[Submit][S ...
- BZOJ 4236 "JOIOJI"(前缀和+map+pair)
传送门: [1]:BZOJ [2]:洛谷 •题解 定义数组 a,b,c 分别表示 'J' , 'O' , 'I' 的前缀和: 要想使区间 (L,R] 满足条件当且仅当 a[R]-a[L] = b[R] ...
- bzoj 5369: [Pkusc2018]最大前缀和
Description 小C是一个算法竞赛爱好者,有一天小C遇到了一个非常难的问题:求一个序列的最大子段和. 但是小C并不会做这个题,于是小C决定把序列随机打乱,然后取序列的最大前缀和作为答案. 小C ...
- BZOJ 4236 JOIOJI(前缀和)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4236 [题目大意] 给出一个只包含三种字母的字符串,求出三种字母数量相等的最长子串 [ ...
- bzoj 1702 贪心,前缀和
[Usaco2007 Mar]Gold Balanced Lineup 平衡的队列 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 807 Solved: ...
随机推荐
- BZOJ 1014 【JSOI2008】 火星人prefix
Description 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字符予以标号:序号: 1 2 3 4 5 6 7 ...
- android mk odex问题 push apk 不生效
Android编译是否生成odex的设置 默认编译odex版本,如果需要非odex版本,请将device/huawei/k3v2_s10/BoardConfig.mk如下两个变量的值修改为:DISAB ...
- U3D sorting layer, sort order, order in layer, layer深入辨析
1,layer是对游戏中所有物体的分类别划分,如UIlayer, waterlayer, 3DModelLayer, smallAssetsLayer, effectLayer等.将不同类的物体划分到 ...
- 45个JavaScript小技巧
原文地址 http://modernweb.com/2013/12/23/45-useful-javascript-tips-tricks-and-best-practices/ 这篇文章的质量个人感 ...
- 你应该知道的25道Javascript面试题
题目来自 25 Essential JavaScript Interview Questions.闲来无事,正好切一下. 一 What is a potential pitfall with usin ...
- (二十三)原型模式详解(clone方法源码的简单剖析)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 原型模式算是JAVA中最简单 ...
- 59-chown 简明笔记
改变文件的所有者或与文件相关联的组 chown [options] owner file-list chown [options] owner: group file-list chown [opti ...
- Tomcat5通过cardadm.xml启动项目
配置tomcat5\conf\Catalina\localhost下的 cardadm.xml ,然后在MyEclipse中,直接启动Tomcat5,不需要部署项目
- iPad开发--美团界面的搭建(主要是对Popover的使用,以及监听)
一.主界面的搭建,效果图.设置self.navigationItem.leftBarButtonItems属性. 由于leftBarButtonItem是通过xib文件创建的,通过xib创建的控件默认 ...
- Shell命令_case
语法: case "变量" in "变量1") ... ;; #输出两个分号 "变量2") ...