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

#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. hive语句on和where一点小问题

    hive join 后面必须=(0.13版本后支持,不支持like,<>),on后面如需加条件语句必须放到where中不然会产生错误结果 (可以一对多,一对一,不可以多对多‘会出现数据翻倍 ...

  2. iOS 动画队列—仿映客刷礼物效果

    http://www.cocoachina.com/ios/20160719/17101.html 最近在研究直播的相关知识,在网上看到了不少优秀的开源项目,但都没有看到映客那个刷礼物的效果,于是手痒 ...

  3. POJ1635Subway tree systems

    Subway tree systems Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8049   Accepted: 33 ...

  4. 推荐一个 Laravel admin 后台管理插件

    如何优雅的写代码,我想是每位程序员的心声.自从15年初第一次接触 Laravel 4.2 开始,我就迷上使用 Laravel 框架了.我一直都想找个时间好好写写有关 Laravel 的使用文章,由浅入 ...

  5. etcd使用

    下载: https://github.com/etcd-io/etcd/releases/tag/v3.3.13 tar -zxvf   etcd-v3.3.13-linux-amd64.tar.gz ...

  6. springboot自定义错误页面(转)

    方法一:Spring Boot 将所有的错误默认映射到/error, 实现ErrorController @Controller @RequestMapping(value = "error ...

  7. Servlet表单处理

    HttpServletRequest   继承ServletRequest  HttpServletRequest生命周期: 一个HttpServletRequest对象在用户向web服务器发送请求时 ...

  8. 一.JDBC学习入门

    一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...

  9. [转]overflow:hidden真的失效了吗

    项目中常常有同学遇到这样的问题,现象是给元素设置了overflow:hidden,但超出容器的部分并没有被隐藏,难道是设置的hidden失效了吗?其实看似不合理的现象背后都会有其合理的解释. 我们知道 ...

  10. @topcoder - SRM766R1 D1L3@ ShortestMissingSubsequences

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个大小为 G 的字符集,并给定一个长度为 N 的字符串 A ...