DP/斜率优化


  Orz Hzwer……

  想到排序了,但没想到其实可以将序列转化为x递增且y递减的序列……因为x是递增的,若y[i]>y[i-1]那么第i-1个就足够小……以至于可以在搞定第 i 个的同时顺便带走……

  这次仔细写一下斜率优化的过程吧~

  方程:$ f[i]=min\{ f[j]+x[i]*y[j+1] \} $

  若 $j>k$ 且 决策$j$更优,则有:\[ \begin{aligned} {f[j]+x[i]*y[j+1]} &<  {f[k]+x[i]*y[k+1]}  \\ {f[j]-f[k]} &<  {x[i]*(y[k+1]-y[j+1])} \\ {\frac{ f[j]-f[k] }{ y[k+1]-y[j+1] }} &<  {x[i]} \end{aligned} \]

  至此我们就可以用单调队列来维护决策序列了(一个凸壳)

 /**************************************************************
Problem: 1597
User: Tunix
Language: C++
Result: Accepted
Time:108 ms
Memory:3036 kb
****************************************************************/ //BZOJ 1597
#include<cmath>
#include<vector>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>''){ if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<=''){ v=v*+ch-''; ch=getchar();}
return v*=sign;
}
const int N=,INF=~0u>>;
typedef long long LL;
/******************tamplate*********************/ struct node{
int x,y;
bool operator < (const node&b)const{
return x<b.x || (x==b.x && y<b.y);
}
}a[N];
LL f[N],x[N],y[N];
int q[N];
double slop(int a,int b){
return double(f[b]-f[a])/(y[a+]-y[b+]);
}
int main(){
int n=getint(),m=;
F(i,,n) a[i].x=getint(),a[i].y=getint();
sort(a+,a+n+);
F(i,,n){
while(m && a[i].y>=y[m]) m--;
x[++m]=a[i].x; y[m]=a[i].y;
}
int l=,r=;
F(i,,m){
while(l<r && slop(q[l],q[l+])<x[i])l++;
int t=q[l];
f[i]=f[t]+y[t+]*x[i];
while(l<r && slop(q[r],i)<slop(q[r-],q[r]))r--;
q[++r]=i;
}
printf("%lld\n",f[m]);
return ;
}

【BZOJ】【1597】【USACO 2008 Mar】土地购买的更多相关文章

  1. 【BZOJ 1597】 [Usaco2008 Mar]土地购买 (斜率优化)

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3601  Solved: 1322 Descrip ...

  2. [USACO 2008 MAR] 土地购买

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1597 [算法] 首先将所有土地按长为第一关键字 , 宽为第二关键字排序 显然 , 当 ...

  3. 【BZOJ 1597】 [Usaco2008 Mar]土地购买

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把这n个土地按照x为第一关键字.y为第二关键字.都升序排. 然后考虑一个土地xi,yi 若有一个土地的x<=xi且y<= ...

  4. BZOJ 1617 Usaco 2008 Mar. River Crossing渡河问题

    [题解] 显然是个DP题. 设$f[i]$表示送$i$头牛过河所需的最短时间,预处理出$t[i]$表示一次性送i头牛过河所需时间,那么我们可以得到转移方程:$f[i]=min(f[i],f[i-j]+ ...

  5. BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4026  Solved: 1473[Submit] ...

  6. BZOJ 1597: [Usaco2008 Mar]土地购买( dp + 斜率优化 )

    既然每块都要买, 那么一块土地被另一块包含就可以不考虑. 先按长排序, 去掉不考虑的土地, 剩下的土地长x递增, 宽y递减 dp(v) = min{ dp(p)+xv*yp+1 } 假设dp(v)由i ...

  7. BZOJ 1597: [Usaco2008 Mar]土地购买【斜率优化+凸包维护】

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4989  Solved: 1847[Submit] ...

  8. BZOJ 1597: [Usaco2008 Mar]土地购买 斜率优化

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MB Description 农夫John准备扩大他的农场,他正在考虑N ...

  9. 斜率优化专题1——bzoj 1597 [Usaco2008 Mar] 土地购买 题解

    转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24387147 [原题] 1597: [Usaco2008 Mar]土地购买 Time ...

  10. 1597: [Usaco2008 Mar]土地购买

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4023  Solved: 1470[Submit] ...

随机推荐

  1. php5 date()获得的时间不是当前时间

    php自5.10起加入了时区的设置,在php中显示的时间都是格林威治标准时间,因此便与中国的用户会差八个小时. 修改php.ini中的 date.timezone 参数: [Date] ; Defin ...

  2. linux下的循环命令写法

    直切正题 方法一:利用while do循环,举例,while true;do ls;sleep 1;done  解释,该命令为每秒执行ls查询命令,sleep 1 为每秒循环,其他命令可直接替换 ls ...

  3. 多层级Spinner列表选项实时更新树形层级(选择城市)

    package com.example.spinnerdemo; import android.os.Bundle; import android.app.Activity; import andro ...

  4. Scala学习笔记1(安装)

    到 官网下载scala tar包  http://www.scala-lang.org/download/ mac Finder里双击解压. 改名成scala 进命令行, mv ~/Downloads ...

  5. STM32F0xx_RTC实时时钟配置详细过程

    Ⅰ.概述 今天总结RTC(Real Time Clock)实时时钟相关的知识,顺带将BKP简单总结一下. STM32的RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待 ...

  6. linuxok6410的I2C驱动分析---用户态驱动

    3  i2c-dev 3.1 概述 之前在介绍I2C子系统时,提到过使用i2c-dev.c文件在应用程序中实现我们的I2C从设备驱动.不过,它实现的是一个虚拟,临时的i2c_client,随着设备文件 ...

  7. django-url调度器-初级篇

    Django 遵从 MVC 模型,并将其特色化为 MTV 模型.模型的核心是通过用户访问的 url 来指向处理的函数,而函数处理后返回相应的结果.所以url决定了用户访问的入口,另外表单处理的提交地址 ...

  8. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  9. Android UI效果实现——Activity滑动退出效果

    更新说明: 1.在QQ网友北京-旭的提醒下,在SlideFrame的initilize方法中添加了focusable.focusableInTouch.clickable的状态设置,否则会导致部分情况 ...

  10. .NET开源工作流RoadFlow-快速入门

    在环境搭建好之后,我们就来学习一下怎样快速创建一个流程,并执行和流转该流程(我们这里讲的只是入门,不涉及到具体流程参数设置). 创建一个流程步骤为:在数据库在创建表-->设计表单-->设置 ...