首页 > 其他分享 >[HNOI2008]玩具装箱

[HNOI2008]玩具装箱

时间:2022-11-04 19:00:45浏览次数:74  
标签:ch val sum 玩具 while HNOI2008 include 装箱 define

Statement

Luogu

Solution

首先考虑最为暴力的做法,也就是我们直接设$f_i$表示将前$i$个玩具合并,那么有转移:
$$
f_i=\min_{j=1}^{i-1}{f_j+val(j+1,i)}
$$
这个时候很明显$val(j+1,i)=(x-L)2={[(i-(j+1)+\sum_{k=j+1}ic_k]-L)}^2$

这个时候不妨设$s_i=\sum_{j=1}ic_j,a_i=i+s_i$,此时这个$val(j+1,i)=(a[i]-a[j]-1-L)2$

注意到这个可以拆成$b=y-kx$的形式,那么就可以用维护一个下凸包然后每次取最前面的点即可.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
using namespace std;
#define re register
#define ll long long
#define int ll
#define mp make_pair
#define sqr(x) ((x)*(x))
typedef pair<int,int> pii;
inline int gi(){
    int f=1,sum=0;char ch=getchar();
    while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
    return sum*f;
}
const int N=50010;
int c[N],n,L,s[N],f[N],q[N],a[N];
int calc(int i,int j){return f[j]+sqr(a[i]-a[j]-L);}
double slope(int i,int j){
    int y=a[j]*a[j]+2*a[j]*L+f[j],x=a[j];
    int Y=a[i]*a[i]+2*a[i]*L+f[i],X=a[i];
    return 1.*(Y-y)/(X-x);
}
signed main(){
#ifndef ONLINE_JUDGE
    freopen("in.in","r",stdin);
    freopen("out.out","w",stdout);
#endif
    n=gi();L=gi()+1;int h=1,t=1;f[0]=0;q[1]=0;
    for(int i=1;i<=n;i++)c[i]=gi(),s[i]=s[i-1]+c[i],a[i]=s[i]+i;
    for(int i=1;i<=n;i++){
        while(h<t&&calc(i,q[h])>calc(i,q[h+1]))h++;
        f[i]=calc(i,q[h]);
        while(h<t&&slope(q[t-1],i)<=slope(q[t-1],q[t]))t--;
        q[++t]=i;
    }
    printf("%lld\n",f[n]);
    return 0;
}

标签:ch,val,sum,玩具,while,HNOI2008,include,装箱,define
From: https://www.cnblogs.com/WhiteSmile/p/16858811.html

相关文章

  • 集成无线收发器和 8 位 RISC MCU 的 SOC 芯片CI2454/CI2451参数-遥控玩具汽车方案
    前面小编给大家介绍了一款集成无线收发器和8位RISC(精简指令集)MCU的SOC芯片-CI2454/CI2451,今天就来讲讲它的优劣势和应用方案。优势1、它拥有RISC精简指令集架构,可以......
  • 装箱和拆箱
    前言本不想记录这一知识点的,但考虑到博客的笔记作用,还是记录下来,方便日后复习。什么是装箱拆箱装箱是把基本类型转换为引用类型的过程;拆箱是把引用类型还原回基本类型......
  • 自动装箱与拆箱
    自动装箱、拆箱看完了包装类型的便捷性后,我们再来落实到自动装箱、自动拆箱上...怎么就自动装箱,自动拆箱了呢?上一段代码,看看哪是自动装箱跟自动拆箱://自动装箱Integ......
  • 如何用webgl(three.js)搭建一个3D库房,3D仓库3D码头,3D集装箱,车辆定位,叉车定位可视
    序又是快两个月没写随笔了,长时间不总结项目,不锻炼文笔,一开篇,多少都会有些生疏,不知道如何开篇,如何写下去。有点江郎才尽,黔驴技穷的感觉。写随笔,通常三步走,第一步,......
  • 关于智能玩具车和义工的BUG归类汇总
    1.选择列表展示出不该展示的类型预估:前端传参错误;或数据库里面数据本身错误(前端查询筛选没有传入响应条件) 2.数据未同步更新;现象:审核通过后,详情页修改了;其它页面相关......
  • DFS(贪心问题)--解决最少数量装箱问题
    题目描述有重量分别为3,5,7公斤的三种货物,和一个载重量为X公斤的箱子(不考虑体积等其它因素,只计算重量)需要向箱子内装满X公斤的货物,要求使用的货物个数尽可能少(三种货物数量无......
  • 包装类,装箱和拆箱
    包装类:lang包里面的常用类,lang包不用导包,它是JVM内置包包含基本类型的包装:为了丰富基本类型的操作,提供八个包装类型,对于数值类型的都有一个父类,number,并且继承了compara......
  • 如何用webgl(three.js)搭建一个3D库房,3D仓库,3D码头,3D集装箱可视化孪生系统——第十
    序又是快两个月没写随笔了,长时间不总结项目,不锻炼文笔,一开篇,多少都会有些生疏,不知道如何开篇,如何写下去。有点江郎才尽,黔驴技穷的感觉。写随笔,通常三步走,第一步,......
  • BZOJ 1008: [HNOI2008]越狱
    题目链接:​​传送门​​早做过的我们用全部的方案数减去不越狱的方案数全部的方案数就是是宗教数是房间数保证不越狱的话第一个房间的罪犯有种宗教可以选择剩下的个房......
  • 基于儿童积木玩具图解 Elasticsearch 聚合
    手敲脑图串讲Elasticsearch核心知识点故事得从这一筐积木说起......周末带孩子正准备玩积木的时候,手机响了,死磕Elasticsearch技术群里在探讨Elastic认证中聚合考点......