斜率优化dp;

推荐学习http://www.cnblogs.com/perseawe/archive/2012/05/12/bz1010.html

看着别人的题解自己学着推,终于理解了

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define maxn 50005
using namespace std; int q[maxn],head=,tail=;
ll f[maxn];
ll g[maxn],s[maxn];
ll dp[maxn]; ll get_g(int k,int j,int c)
{
return dp[k]+(f[k]+c)*(f[k]+c)-dp[j]-(f[j]+c)*(f[j]+c);
} ll get_s(int k,int j)
{
return *(f[k]-f[j]);
} int main()
{
int n,m,xx;
scanf("%d%d",&n,&m);
for(int i=; i<=n; i++)
{
scanf("%d",&xx);
f[i]+=f[i-]+xx;
}
for(int i=; i<=n; i++)f[i]+=i;
int c=+m;
q[tail++]=;
for(int i=;i<=n;i++)
{
while(head<tail-&&get_g(q[head+],q[head],c)<=f[i]*get_s(q[head+],q[head]))++head;
int v=q[head];
dp[i]=dp[v]+(f[i]-f[v]-c)*(f[i]-f[v]-c);
q[tail++]=i;
for(int j=tail-;j>head;j--)
{
int cc=q[j+];
int bb=q[j];
int aa=q[j-];
if(get_g(bb,aa,c)*get_s(cc,bb)>=get_g(cc,bb,c)*get_s(bb,aa))
q[j]=q[--tail];
else break;
}
}
printf("%lld\n",dp[n]);
return ;
}

1010 [HNOI2008]玩具装箱toy的更多相关文章

  1. BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9812  Solved: 3978[Submit][St ...

  2. BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化DP

    1010: [HNOI2008]玩具装箱toy Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再 ...

  3. bzoj 1010 [HNOI2008]玩具装箱toy(DP的斜率优化)

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7874  Solved: 3047[Submit][St ...

  4. BZOJ 1010 [HNOI2008]玩具装箱toy

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7184  Solved: 2724[Submit][St ...

  5. 1010: [HNOI2008]玩具装箱toy(斜率优化)

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 12280  Solved: 5277[Submit][S ...

  6. Bzoj 1010: [HNOI2008]玩具装箱toy(斜率优化)

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MB Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定 ...

  7. BZOJ 1010: [HNOI2008]玩具装箱toy(斜率优化dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1010 题意: 思路: 容易得到朴素的递归方程:$dp(i)=min(dp(i),dp(k)+(i-k ...

  8. 【BZOJ】1010: [HNOI2008]玩具装箱toy(dp+斜率优化)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1010 蛋疼用latex写了份题解.. 2015.03.07 upd:很多东西可能有问题,最好看下边提 ...

  9. 1010: [HNOI2008]玩具装箱toy [dp][斜率优化]

    Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...

  10. BZOJ 1010: [HNOI2008]玩具装箱toy | 单调队列优化DP

    原题: http://www.lydsy.com/JudgeOnline/problem.php?id=1010 题解: #include<cstdio> #include<algo ...

随机推荐

  1. wireshark的ubuntu更新ppa源

    默认的ppa源安装的是1.8.3的,这个源直接更新到1.11.0 $ sudo add-apt-repository ppa:dreibh/ppa $ sudo apt-get update $ su ...

  2. activity和fragment的声明周期

    Activity生命周期: Fragment生命周期:

  3. scala学习笔记:变量声明中的模式

    先看个正常的写法: scala> val x = 1 x: Int = 1 体会一下元组的写法: scala> val (x,y,z)=(1,2,3) x: Int = 1 y: Int ...

  4. asp.net_MVC_jq三级联动

    数据库结构 建立三张表,Association,Team,Player 关系如下: 建立asp.net MVC 3项目,在HomeController.cs中利用Linq to SQL获取数据 首先实 ...

  5. .net 邮件批量发送功能源码

    #define debug   using System; using System.Text; using System.Linq; using System.IO; using System.Ne ...

  6. SQL Server 错误检测与修复

    简介 在一个理想的世界中,不会存在任何数据库的损坏,就像我们不会将一些严重意外情况列入我们生活中的日常一样,而一旦这类事情发生,一定会对我们的生活造成非常显著的影响,在SQL Server中也同样如此 ...

  7. Aix命令大全

    AIX服务器系统命令简介 在AIX操作系统上有很多的命令.这里介绍一些系统级的命令,它将有助于回答一些常见问题.大家以此做参考,并补充修改. 以下命令在AIX 5.1上测试通过. 正文 以下命令在AI ...

  8. C++中使用多线程

    使用的函数是CreateThread和CloseHandle相互配合. 举个简单的例子: 申明类变量 HANDLE hThread; DWORD ThreadID; 在需要创建线程的地方使用: hTh ...

  9. vim 的 tags 模块 与 ctags

    1. 概述 一般来说,在代码中跳转,离不开 ctags. 实际上,vim 中代码跳转是由 vim tags 模块完成的,tags 模块依赖于 tags 文件. ctags(Generate tag f ...

  10. 【转】提高PHP性能的53个技巧

    PHP技巧汇总:提高PHP性能的53个技巧用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符 ...