bzoj1597懒得复制,戳我戳我

Solution:

  • 线性DP打牌\(+\)斜率优化
  • 定义状态:\(dp[i]\)到了位置\(i\)最少花费
  • 首先我们要发现,如果有一个小方块能被其他的大方块包围,其实可以忽略这个小方块,因为我们可以把他们俩捆绑,小方块的边长不会对求值造成贡献
  • 然后我们可以按照宽从大到小排序,长从小到大(剔除了那种包含的情况),保证单调性
  • 我们就可以列出递推式子:\(dp[i]=min(dp[j-1]+y[j]*x[i])\)

注意是\(dp[j-1]\)(这里搞错了好久)

  • 显然这个是满足决策单调性的嘛(主要是我不会证明)
  • 然后我们就可玩弄这个式子,假定\(j<k\),那么\(y[j]>y[k]\),\(dp[j-1]<dp[k-1]\),且\(x[i]\)单调增

\[dp[j-1]+y[j]*x[i]>dp[k-1]+y[k]*x[i]
\]

\[dp[j-1]-dp[k-1]>-(y[j]-y[k])*x[i]
\]

\[\frac{dp[j-1]-dp[k-1]}{y[j]-y[k]}>-x[i]
\]

  • 然后维护一个上凸包就ok了

Code:

//It is coded by Ning_Mew on 5.22
#include<bits/stdc++.h>
#define LL long long
using namespace std; const int maxn=5e5+7; int n;
struct Node{
LL x,y;
}node[maxn];
LL dp[maxn],large=-10000;
int team[maxn],s=0,t=1; LL Min(LL a,LL b){return a<b?a:b;}
bool cmp(const Node &a,const Node &b){
if(a.y!=b.y)return a.y>b.y;return a.x>b.x;
}
double slope(int i,int j){
return 1.0*(dp[i-1]-dp[j-1])/(node[i].y-node[j].y);
}
int main(){
freopen("in.in","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;i++){scanf("%lld%lld",&node[i].x,&node[i].y);}
sort(node+1,node+n+1,cmp);
s=1;t=2;team[s]=1;
dp[1]=node[1].x*node[1].y;
large=node[1].x; for(int i=2;i<=n;i++){
if(node[i].x<=large){dp[i]=dp[i-1];continue;}
large=max(large,node[i].x);
while((s+1<t)&&(slope(team[s],team[s+1])>-1.0*node[i].x)){
s++;
} dp[i]=Min(node[i].x*node[i].y+dp[i-1],dp[ team[s]-1 ]+node[ team[s] ].y*node[i].x); while((s+1<t)&&(slope(team[t-1],i)>slope(team[t-2],team[t-1]))){t--;}
team[t]=i;t++;
}
printf("%lld\n",dp[n]);
return 0;
}

【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)的更多相关文章

  1. [bzoj1597][usaco2008 mar]土地购买 (动态规划+斜率优化)

    Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000, ...

  2. [BZOJ1597][Usaco2008 Mar]土地购买(斜率优化)

    Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000, ...

  3. 2018.09.10 bzoj1597: [Usaco2008 Mar]土地购买(斜率优化dp)

    传送门 终究还是通宵了啊... 这是一道简单的斜率优化dp. 先对所有土地排序,显然如果有严格小于的两块土地不用考虑小的一块. 于是剩下的土地有一条边单增,另外一条单减. 我们假设a[i]是单减的,b ...

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

    题意 题目链接 Sol 重新看了一遍斜率优化,感觉又有了一些新的认识. 首先把土地按照\((w, h)\)排序,用单调栈处理出每个位置第向左第一个比他大的位置,显然这中间的元素是没用的 设\(f[i] ...

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

    东风吹战鼓擂第一题土地购买送温暖 ★★★   输入文件:acquire.in   输出文件:acquire.out   简单对比时间限制:1 s   内存限制:128 MB 农夫John准备扩大他的农 ...

  6. BZOJ 1597: [Usaco2008 Mar]土地购买 动态规划 + 斜率优化

    Code: #include<bits/stdc++.h> #define maxn 1000000 #define ll long long #define x(i) (b[i+1]) ...

  7. 1597: [Usaco2008 Mar]土地购买 [ dp+斜率优化 ] 未完

    传送门 1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1979  Solved: 705[Subm ...

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

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

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

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

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

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

随机推荐

  1. 女神画廊App (Swift1.2)

    这个App的是storyboard+code的结合,主要的重点是: 1.segue传递图片值. 2.Autolayout中可以使用右下角三角符号使用Add Missing Constraints进行大 ...

  2. c# 限制同时启动多个实例程序运行

    using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using S ...

  3. # 2017-2018-2 20155319《网络对抗技术》Exp9 :Web安全基础

    2017-2018-2 20155319<网络对抗技术>Exp9 :Web安全基础 实践过程 webgoat准备 从GitHub上下载jar包(老师的虚拟机中有 无需下载) 拷贝到本地,并 ...

  4. 利用git将项目上传到github

            本文主要介绍如果用git将项目上传到githup. 一.准备工作         (1)欲将项目上传到githup,先在githup上新建一个仓库.这里就不介绍.         (2 ...

  5. C指针乱谈(1)

    写了几年的C指针几乎没怎么用过,因为感觉没什么用.不过在听了一位老师讲课之后,我改变的我的想法. 在此稍做总结,希望能帮到一些和我有同样想法的人,希望看完这篇文章后能改变您的想法. 首先,说说概念,指 ...

  6. 【php增删改查实例】第四节 -自己 DIY 一个数据库管理工具

    本节介绍如何自己DIY一个数据库管理工具,可以在页面输入sql 进行简单的增删改查操作. 首先,找到xampp的安装目录,打开htdocs: 新建一个php文件,名称为 mysqladmin.php ...

  7. Caffe+Windows 环境搭建收集

    Caffe+Anconda3+VS2015+Win10(64位)环境搭建 Caffe on Windows (Visual Studio 2015+CUDA8.0+cuDNNv5) Win10+VS2 ...

  8. RHEL6 最小化系统 编译安装部署zabbix (mysql)

    RHEL6 最小化系统 编译安装部署zabbix (mysql)官方说明详细见:https://www.zabbix.com/documentation/4.0/manual/installation ...

  9. [THUSC2017]巧克力[斯坦纳树、随机化]

    题意 题目链接 分析 对于第一问,如果颜色数量比较少的话可以 \(\binom{cnt}{k}\) 枚举最终连通块中的 \(k\) 种颜色,然后利用斯坦纳树求解. 如果颜色比较多,考虑将所有的颜色重新 ...

  10. nginx location 正则匹配

    nginx 统计语句1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l2.统计访问URL统计PV awk '{print $7 ...