卧槽我感觉写的是对的,但是就是样例都过不了。。。留坑

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define LL long long
using namespace std;
const int maxx = ;
struct node{
int h,w;
}p[maxx];
LL dp[maxx][];
LL sums[maxx];
LL sumw[maxx];
LL que[maxx];
bool cmp(node a,node b){
return a.h<b.h;
}
LL Y(int k,int j){
return dp[k][j-]-sums[k]+(LL)sums[k]*p[k+].h;
}
LL KY(int j,int k1,int k2){
return Y(k1,j)-Y(k2,j);
}
LL X(int k){
return p[k+].h;
}
LL KX(int i,int j){
return X(i)-X(j);
}
int main(){
int n,K;
while(~scanf("%d%d",&n,&K)){
sums[]=;
sumw[]=;
for (int i=;i<=n;i++){
scanf("%d%d",&p[i].w,&p[i].h);
}
memset(dp,,sizeof(dp));
sort(p+,p++n,cmp);
for (int i=;i<=n;i++){
sums[i]=(LL)sums[i-]+p[i].w*p[i].h;
sumw[i]=(LL)sumw[i-]+p[i].w;
dp[i][]=sums[i]-(LL)sumw[i]*p[].h;
}
int l,r;
l=r=;
for (int j=;j<=K;j++){
l=r=;
que[]=;
dp[j][j]=;
for (int i=;i<=n;i++){
while(l<r && KY(j,que[l+],que[l])<=sumw[i]*KX(que[l+],que[l]))l++;
dp[i][j]=dp[que[l]][j-]+sums[i]-sums[que[l]]-(sumw[i]-sumw[que[l]])*p[que[l]+].h;
while(l<r && KY(j,que[r],que[r-])*KX(i,que[r])>=KY(j,i,que[r])*KX(que[r],que[r-]))r--;
que[++r]=i;
}
}
// for (int i=1;i<=n;i++){
// for (int j=1;j<=K;j++){
// cout<<dp[i][j]<<" ";
// }
// }
printf("%lld\n",dp[n][K]);
}
return ;
}

Wood Processing牛客第十场 斜率优化DP的更多相关文章

  1. 牛客第十场Rikka with Prefix Sum

    由于其中的2操作非常多,我们就需要将其快速的更改,就会用到组合数的东西 其实自己手写一下就可以发现对于一个点增加的值在经过不断地前缀和累加过程中对于一点的贡献满足杨辉三角 所以我们就需要记录一下其中的 ...

  2. 牛客第十场 F.Popping Balloons

    第一维直接遍历 第二维用线段树维护每个最左端可以得到的贡献 在线段树上每次删除一个点会影响到 X   X-R   X-2*R  3个值 最多操作1e5次 复杂度 6*n*logn(删了还要加回来 #i ...

  3. 牛客 70E 乌龟跑步 (bitset优化dp)

    有一只乌龟,初始在0的位置向右跑. 这只乌龟会依次接到一串指令,指令T表示向后转,指令F表示向前移动一个单位.乌龟不能忽视任何指令.现在我们要修改其中正好n个指令(一个指令可以被改多次,一次修改定义为 ...

  4. 2019牛客暑期多校训练营(第十场)J - Wood Processing (斜率优化DP)

    >传送门< 题意 $n$个宽度为$w_{i}$,高为$h_{i}$ 的 木块,要求分成$k$组,对于每组内的所有木块,高度都变为组内最低木块的高度,宽度保持不变,求变化的最小面积. 分析 ...

  5. 斜率优化DP学习笔记

    先摆上学习的文章: orzzz:斜率优化dp学习 Accept:斜率优化DP 感谢dalao们的讲解,还是十分清晰的 斜率优化$DP$的本质是,通过转移的一些性质,避免枚举地得到最优转移 经典题:HD ...

  6. bzoj-1096 1096: [ZJOI2007]仓库建设(斜率优化dp)

    题目链接: 1096: [ZJOI2007]仓库建设 Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L ...

  7. 【BZOJ-1096】仓库建设 斜率优化DP

    1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3719  Solved: 1633[Submit][Stat ...

  8. HDU3507 Print Article(斜率优化dp)

    前几天做多校,知道了这世界上存在dp的优化这样的说法,了解了四边形优化dp,所以今天顺带做一道典型的斜率优化,在百度打斜率优化dp,首先弹出来的就是下面这个网址:http://www.cnblogs. ...

  9. 斜率优化dp(POJ1180 Uva1451)

    学这个斜率优化dp却找到这个真心容易出错的题目,其中要从n倒过来到1的确实没有想到,另外斜率优化dp的算法一开始看网上各种大牛博客自以为懂了,最后才发现是错了. 不过觉得看那些博客中都是用文字来描述, ...

随机推荐

  1. centos下彻底删除mysql

    打算重新试试安装两个mysql,就把老的删除了. yum remove mysql mysql-server mysql-libs compat-mysql51 rm -rf /var/lib/mys ...

  2. NIOP模拟17.10.13

    太水,简述一下题意 T1 让你计算一个形如Σai * bi^ki 快速幂即可 #include <iostream> #include <cstdio> #include &l ...

  3. P1460 健康的荷斯坦奶牛 Healthy Holsteins

    P1460 健康的荷斯坦奶牛 Healthy Holsteins 题目描述 农民JOHN以拥有世界上最健康的奶牛为傲.他知道每种饲料中所包含的牛所需的最低的维他命量是多少.请你帮助农夫喂养他的牛,以保 ...

  4. python之特点

    .python区分大小写:2.注释规范:python使用井号#作为单行注释,且注释的位置,一般放在要注释代码的前一行或这代码的右侧:多行注释则可以用连续三个单引号开始一行,并连续三个单引号在要注释的代 ...

  5. Django与HTML业务基本结合--基本的用户名密码提交方法2

    from django.shortcuts import render # Create your views here. from django.shortcuts import render de ...

  6. Listview的条目item内的点击响应事件

    还是这张图 这里的历史列表就是一个ListView,抛开该界面中ScrollView或者RecycleView与该ListView会有冲突,所谓的冲突,说白了就是父控件与子控件两者间的关系冲突,该冲突 ...

  7. 机器学习中的那些树——决策树(三、CART 树)

    前言 距上篇文章已经过了9个月 orz..趁着期末复习,把博客补一补.. 在前面的文章中介绍了决策树的 ID3,C4.5 算法.我们知道了 ID3 算法是基于各节点的信息增益的大小 \(\operat ...

  8. PLSql 查询结果让数字显示为字符

    有时候某些地段太长的话就会默认显示为数字,例如ID字段过长就会显示为4.34E23的形式,遇到这样情况如何还原id字段的本身形式呢? Tools-->preference-->SQL Wi ...

  9. JavaEE架构简介与JavaWeb新特性

    Fragment 将一个web应用做成几个部分,然后整合 创建Fragment项目   然后打包放入Servlet项目中的WEB-INF下的lib中 注解 @WebServlet @WebServle ...

  10. 盘点Apache毕业的11个顶级项目

    自1999年成立至今,Apache 软件基金会已成功建立起自己强大的生态圈.其社区涌现了非常多优秀的开源项目,同时有越来越多国内外项目走向这个国际开源社区进行孵化.据悉,目前所有的 Apache 项目 ...