【BZOJ1713】[Usaco2007 China]The Bovine Accordion and Banjo Orchestra 音乐会 斜率优化
【BZOJ1713】[Usaco2007 China]The Bovine Accordion and Banjo Orchestra 音乐会
Description
Input
第1行输入N,之后N行输入Ai,之后N行输入Bi.
Output
输出最大收益.
Sample Input
1
1
5
5
1
1
INPUT DETAILS:
There are 6 cows: 3 accordionists and 3 banjoists. The accordionists have
talent levels (1, 1, 5), and the banjoists have talent levels (5, 1, 1).
Sample Output
HINT
手风琴手3和班卓琴手1搭配,创造收益25美元.手风琴手1和手风琴手2喝酒用了4美元.同样班卓琴手2和班卓琴手3用了4美元.最后收益为25 -4-4=17美元.
题解:二维斜率优化,代码不忍直视,注意所有h,t都要用数组来保存,q必须要用二维的
#include <cstdio>
#include <iostream>
#include <cstring>
#define ya(k) (sb[k]*sb[k]-f[i-1][k])
#define xa(k) (sb[k])
#define yb(k) (sa[k]*sa[k]-f[k][j-1])
#define xb(k) (sa[k])
using namespace std;
typedef long long ll;
int n;
ll a[1010],b[1010],qa[1010][1010],qb[1010][1010],sa[1010],sb[1010],ha[1010],hb[1010],ta[1010],tb[1010];
ll f[1010][1010],ans;
int main()
{
scanf("%d",&n);
int i,j;
for(i=1;i<=n;i++) scanf("%lld",&a[i]),sa[i]=sa[i-1]+a[i];
for(i=1;i<=n;i++) scanf("%lld",&b[i]),sb[i]=sb[i-1]+b[i];
for(i=1;i<=n;i++) ha[i]=hb[i]=1,f[0][i]=-sb[i]*sb[i],f[i][0]=-sa[i]*sa[i];
ans=-1,ans<<=60;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
f[i][j]=-sa[i-1]*sa[i-1]-sb[j-1]*sb[j-1]+a[i]*b[j];
while(ha[i]<ta[i]&&(ya(qa[ha[i]+1][i])-ya(qa[ha[i]][i]))<=(xa(qa[ha[i]+1][i])-xa(qa[ha[i]][i]))*2*sb[j-1]) ha[i]++;
if(i>1) f[i][j]=max(f[i][j],f[i-1][qa[ha[i]][i]]+a[i]*b[j]-(sb[j-1]-sb[qa[ha[i]][i]])*(sb[j-1]-sb[qa[ha[i]][i]]));
while(ha[i]<ta[i]&&(ya(qa[ta[i]][i])-ya(qa[ta[i]-1][i]))*(xa(j)-xa(qa[ta[i]][i]))>=(ya(j)-ya(qa[ta[i]][i]))*(xa(qa[ta[i]][i])-xa(qa[ta[i]-1][i]))) ta[i]--;
qa[++ta[i]][i]=j;
while(hb[j]<tb[j]&&(yb(qb[hb[j]+1][j])-yb(qb[hb[j]][j]))<=(xb(qb[hb[j]+1][j])-xb(qb[hb[j]][j]))*2*sa[i-1]) hb[j]++;
if(j>1) f[i][j]=max(f[i][j],f[qb[hb[j]][j]][j-1]+a[i]*b[j]-(sa[i-1]-sa[qb[hb[j]][j]])*(sa[i-1]-sa[qb[hb[j]][j]]));
while(hb[j]<tb[j]&&(yb(qb[tb[j]][j])-yb(qb[tb[j]-1][j]))*(xb(i)-xb(qb[tb[j]][j]))>=(yb(i)-yb(qb[tb[j]][j]))*(xb(qb[tb[j]][j])-xb(qb[tb[j]-1][j]))) tb[j]--;
qb[++tb[j]][j]=i;
ans=max(ans,f[i][j]-(sa[n]-sa[i])*(sa[n]-sa[i])-(sb[n]-sb[j])*(sb[n]-sb[j]));
}
}
printf("%lld",ans);
return 0;
}
【BZOJ1713】[Usaco2007 China]The Bovine Accordion and Banjo Orchestra 音乐会 斜率优化的更多相关文章
- BZOJ_1713_[Usaco2007 China]The Bovine Accordion and Banjo Orchestra 音乐会_斜率优化
BZOJ_1713_[Usaco2007 China]The Bovine Accordion and Banjo Orchestra 音乐会_斜率优化 Description Input 第1行输入 ...
- [USACO Special 2007 Chinese Competition]The Bovine Accordion and Banjo Orchestra
[原题描述以及提交地址]:http://acm.tongji.edu.cn/problem?pid=10011 [题目大意] 给定两个长度为N的序列,要给这两个序列的数连线.连线只能在两个序列之间进行 ...
- 1712: [Usaco2007 China]Summing Sums 加密
1712: [Usaco2007 China]Summing Sums 加密 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 338 Solved: 12 ...
- BZOJ_1712_[Usaco2007 China]Summing Sums 加密_矩阵乘法
BZOJ_1712_[Usaco2007 China]Summing Sums 加密_矩阵乘法 Description 那N只可爱的奶牛刚刚学习了有关密码的许多算法,终于,她们创造出了属于奶牛 ...
- bzoj 1712: [Usaco2007 China]Summing Sums 加密
1712: [Usaco2007 China]Summing Sums 加密 Description 那N只可爱的奶牛刚刚学习了有关密码的许多算法,终于,她们创造出了属于奶牛的加密方法.由于她 ...
- BZOJ1712 : [Usaco2007 China]Summing Sums 加密
设$s[i]$为进行$i$次加密后所有奶牛数字的和,有$s[i]=(n-1)s[i-1]$. 设$c[i]$为某头固定的奶牛进行$i$次加密后的数字, 若$i$为奇数,有: \[c[i]=((1-n) ...
- 【bzoj1712】[Usaco2007 China]Summing Sums 加密 矩阵乘法
题目描述 那N只可爱的奶牛刚刚学习了有关密码的许多算法,终于,她们创造出了属于奶牛的加密方法.由于她们并不是经验十足,她们的加密方法非常简单:第i只奶牛掌握着密码的第i个数字,起始的时候是Ci(0≤C ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- BZOJ-USACO被虐记
bzoj上的usaco题目还是很好的(我被虐的很惨. 有必要总结整理一下. 1592: [Usaco2008 Feb]Making the Grade 路面修整 一开始没有想到离散化.然后离散化之后就 ...
随机推荐
- Spring Boot 日志记录 SLF4J
Spring Boot 日志记录 SLF4J 2016年01月12日 09:25:28 阅读数:54086 在开发中打印内容,使用 System.out.println() 和 Log4j 应当是人人 ...
- AJAX 实时读取输入文本(php)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- (四)Qt实现自定义模型基于QAbstractTableModel (一般)
Qt实现自定义模型基于QAbstractTableModel 两个例子 例子1代码 Main.cpp #include <QtGui> #include "currencymod ...
- samba的使用
第一步:了解它 为了实现Window主机与Linux服务器之间的资源共享,Linux操作系统提供了 Samba服务,Samba服务为两种不同的操作系统架起了一座桥梁,使 Linux 系统和Window ...
- 转载:【原译】Erlang常见注意事项(Efficiency Guide)
转自:http://www.cnblogs.com/futuredo/archive/2012/10/17/2726416.html Common Caveats(常见注意事项) Erlang/OTP ...
- php 输出带变量字符串(echo 函数的应用)
转自: http://www.cnblogs.com/devcjq/articles/2306150.html 学习PHP从最简单的开始:echo, print<?php$temp = arr ...
- 最短路径问题-Dijkstra
概述 与前面说的Floyd算法相比,Dijkstra算法只能求得图中特定顶点到其余所有顶点的最短路径长度,即单源最短路径问题. 算法思路 1.初始化,集合K中加入顶点v,顶点v到其自身的最短距离为0, ...
- 经常使用的CSS Hack技术集锦
来源:http://www.ido321.com/938.html 一.什么是CSS Hack? 不同的浏览器对CSS的解析结果是不同的,因此会导致同样的CSS输出的页面效果不同,这就须要CSS Ha ...
- linux 访问远程务器代码
比如用SSH 访问远程 登陆名为hadoop 的IP为192.168.1.35的主机,则用ssh hadoop@192.168.1.35,然后依据提示输入密码即可.
- centos6.5 开发环境部署(nignx1.7.10+php5.4.38+mysql+ftp)
一些命令和规则以及准备 本次流程再 DigitalOcean上的vps上通过 查看是否已经安装 rpm -qa | grep nginx 删除安装 #普通删除模式 rpm -e nginx #强力删除 ...