传送门

终究还是通宵了啊。。。

这是一道简单的斜率优化dp。

先对所有土地排序,显然如果有严格小于的两块土地不用考虑小的一块。

于是剩下的土地有一条边单增,另外一条单减。

我们假设a[i]是单减的,b[i]是单增的。

f[i]=min(f[j]+a[j+1]∗b[i])" role="presentation" style="position: relative;">f[i]=min(f[j]+a[j+1]∗b[i])f[i]=min(f[j]+a[j+1]∗b[i])

对于两个决策k1&lt;k2" role="presentation" style="position: relative;">k1<k2k1<k2,如果k2优于k1,那么:

f[k1]−f[k2]&gt;b[i]∗(a[k2+1]−a[k1+1])" role="presentation" style="position: relative;">f[k1]−f[k2]>b[i]∗(a[k2+1]−a[k1+1])f[k1]−f[k2]>b[i]∗(a[k2+1]−a[k1+1])

注意a是单减的除过去要变号。

<=>slope&lt;b[i]" role="presentation" style="position: relative;">slope<b[i]slope<b[i]

于是可以斜率优化了。

代码:

#include<bits/stdc++.h>
#define N 50005
#define ll long long
using namespace std;
inline ll read(){
    ll ans=0;
    char ch=getchar();
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
    return ans;
}
int n,tot=0,hd,tl,q[N];
ll f[N];
struct Node{ll a,b;}p_[N],p[N];
inline bool cmp(Node a,Node b){return a.a==b.a?a.b>b.b:a.a>b.a;}
inline double slope(int i,int j){return (f[i]-f[j])*1.0/(p[j+1].a-p[i+1].a);}
int main(){
    n=read(),hd=tl=1;
    for(int i=1;i<=n;++i)p_[i].a=read(),p_[i].b=read();
    sort(p_+1,p_+n+1,cmp);
    for(int i=1;i<=n;++i)if(tot==0||p_[i].b>p[tot].b)p[++tot]=p_[i];
    for(int i=1;i<=tot;++i){
        while(hd<tl&&slope(q[hd],q[hd+1])<p[i].b)++hd;
        int j=q[hd];
        f[i]=f[j]+p[i].b*p[j+1].a;
        while(hd<tl&&slope(q[tl],i)<slope(q[tl-1],q[tl]))--tl;
        q[++tl]=i;
    }
    cout<<f[tot];
    return 0;
}

2018.09.10 bzoj1597: [Usaco2008 Mar]土地购买(斜率优化dp)的更多相关文章

  1. bzoj1597[Usaco2008 Mar]土地购买 斜率优化dp

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

  2. bzoj1597 [Usaco2008 Mar]土地购买——斜率优化DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1597 就是斜率优化水题... 然而WA了十几遍,正负号处理真让人心累... 还是该负就负,别 ...

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

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

  4. [Bzoj1597][Usaco2008 Mar]土地购买(斜率优化)

    题目链接 因为题目说可以分组,并且是求最值,所以斜率优化应该是可以搞的,现在要想怎么排序使得相邻的数在一个组中最优. 我们按照宽$w$从小到大,高$h$从小到大排序.这时发现可以筛掉一些一定没有贡献的 ...

  5. BZOJ1597: [Usaco2008 Mar]土地购买——斜率优化

    题目大意: 将$n$个长方形分成若干部分,每一部分的花费为部分中长方形的$max_长*max_宽$(不是$max_{长*宽}$),求最小花费 思路: 首先,可以被其他长方形包含的长方形可以删去 然后我 ...

  6. bzoj 1597 [Usaco2008 Mar]土地购买——斜率优化dp

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1597 又一道斜率优化dp.负数让我混乱.不过仔细想想还是好的. 还可以方便地把那个负号放到x ...

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

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

  8. 【斜率DP】bzoj1597: [Usaco2008 Mar]土地购买

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

  9. Bzoj1597 [Usaco2008 Mar]土地购买

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4005  Solved: 1460 Description 农夫John准备扩大他的农场,他正在考虑N ...

随机推荐

  1. java中正则表达式,编译报错:Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )

    转自:https://www.cnblogs.com/EasonJim/p/6561666.html 若出现:Invalid escape sequence (valid ones are  \b   ...

  2. java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList

    String[] 转换成 ArrayList 报的错. String[] str = {"A","B"}; ArrayList<String> li ...

  3. kafka 修改partition,删除topic,查询offset

    修改分区个数: ./kafka-topics./kafka/<id_of_kafka> --alter --partitions 10 --topic test_topic 上面命令将te ...

  4. 搭建turbine时 hystrix MaxConcurrentConnections reached 异常

    2017-03-28 10:04:47.438 ERROR 1035 --- [InstanceMonitor] c.n.t.monitor.instance.InstanceMonitor : Co ...

  5. mongodb基础学习9-分片

    分片和复制集不同,复制集是多个实例存储相同的内容,而分片是将内容存储到不同的分片上,不同分片存储的数据不同 下面看看具体的操作: 先启动两个片的实例: 再启动configsvr,要加上configsv ...

  6. cobbler之ks文件编辑

    kickstart文件的组成部分: 命令段:用于配置系统 软件包:指定要安装的程序包及程序包组 %packages 标识 @Base:使用@指定包组       lftp:直接写程序包名      注 ...

  7. 预习 jdbc 技术简介

    JDBC简介: JDBC全称为java database connectivity,是sun公司指定的java数据库连接技术的简称. 他是sun公司和数据库开发商共同开发出来的独立于DBMS的应用程序 ...

  8. C#实现支持单点登录的一个存储用户信息的类

    网上有很多介绍单点登录的文章,但多为架构设计以及概念性文章,而本文将介绍单点登录的具体具体实现 利用哈希表,作为保存登录用户的队列        private static Hashtable m_ ...

  9. 神经网络中embedding层作用——本质就是word2vec,数据降维,同时可以很方便计算同义词(各个word之间的距离),底层实现是2-gram(词频)+神经网络

    Embedding tflearn.layers.embedding_ops.embedding (incoming, input_dim, output_dim, validate_indices= ...

  10. etcd 集群恢复

    七个节点,挂了5个,etcd无法访问 参考: https://coreos.com/etcd/docs/latest/op-guide/recovery.html 此次我只恢复了v3的数据 在存活的节 ...