1911: [Apio2010]特别行动队

Time Limit: 4 Sec  Memory Limit: 64 MB
Submit: 892  Solved: 359
[Submit][Status][Discuss]

DescriptionInputOutputSample Input4
-1 10 -20
2 2 3 4 Sample Output9HINT

Source

_________________________________________

很简单的动规方程: F[i]:=max(F[j]+a*(s[i]-s[j])^2+b*(s[i]-s[j])+c)

用斜率式优化:

原方程展开:      F[i]:=max(F[j]+a*s[i]^2-2*a*s[i]*s[j]+a*s[j]^2+b*s[i]-b*s[j]+c)

设g(i,j)为  F[i] 的一个决策

则  g(i,j)-g(i,k)=f[j]+a*s[j]^2-(f[k]+a*s[k]^2)-(b+a*s[i]^2)*(s[j]-s[k])

当 决策j 优于决策 k时  g(i,j)-g(i,k)>0

设 y[i]=f[i]+a*s[i]^2  , x[i]=s[i]

所以可化简为      (y[k]-y[j])/(x[i]-x[j])>b+a*s[i]^2

因为 a<0 所以  b+a*s[i]^2 单调递减。

_________________________________________

 1 ProgramStone;
 2 var i,j,head,tail,a,b,c,n:longint;     s,f,cons,sq,que:array[0..1000001]ofint64;
 3 function delhead(i,j,k:longint):boolean;
 4 begin
 5     if cons[i]*(s[j]-s[k])>sq[j]-sq[k] then
 6         exit(true)
 7     else
 8         exit(false);
 9 end;
10 functiondeltail(i,j,k:longint):boolean;
11 begin
12     if(sq[i]-sq[j])*(s[j]-s[k])>(sq[j]-sq[k])*(s[i]-s[j])
13     then exit(true)
14     else exit(false);
15 end;
16 functionmax(a,b:int64):int64;
17 begin
18 ifa>b thenmax:=a elsemax:=b;
19 end;
20 Begin
21 readln(n);
22 readln(a,b,c);
23 fori:=1ton do   read(s[i]);
24 fori:=2ton do   inc(s[i],s[i-1]);
25  head:=1;tail:=0;
26  fori:=1ton do
27 begin
28 cons[i]:=b+2*a*s[i];      while(tail>head)and(delhead(i,que[head],que[head+1])) do
29 inc(head);
30 j:=que[head];
31 f[i]:=max(a*sqr(s[i])+b*s[i]+c,f[j]+a*sqr(s[i]-s[j])+b*(s[i]-s[j])+c);
32 sq[i]:=f[i]+a*sqr(s[i]);      while(tail>head)and(deltail(i,que[tail],que[tail-1])) dodec(tail);      inc(tail);
33 que[tail]:=i;
34 end;
35  writeln(f[n]);
36  end.
37
38                  

转载于:https://www.cnblogs.com/yesphet/p/5236331.html

bzoj 1911: [Apio2010]特别行动队 2011-12-26相关推荐

  1. bzoj 1911: [Apio2010]特别行动队 -- 斜率优化

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MB Description Input Output Sample Input 4 ...

  2. BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MB Submit: 4142  Solved: 1964 [Submit][Sta ...

  3. [BZOJ] 1911 [Apio2010]特别行动队

    题目描述 你有一支由 n 名预备役士兵组成的部队,士兵从 1 到 n 编号,要将他们拆分 成若干特别行动队调入战场.出于默契的考虑,同一支特别行动队中队员的编号 应该连续,即为形如 (i, i + 1 ...

  4. bzoj 1911: [Apio2010]特别行动队【斜率优化dp】

    仔细想想好像没学过斜率优化.. 很容易推出状态转移方程\( f[i]=max{f[j]+a(s[i]-s[j])^2+b(s[i]-s[j])+c} \) 然后考虑j的选取,如果选j优于选k,那么: ...

  5. BZOJ 1911: [Apio2010]特别行动队

    又是斜率dp= = f[i]=MAX(f[x]+a*sqr(f[i]-f[x])+b*(f[i]-f[x])+c) 设对于f[x] f[i]+a*sqr(s[x]-s[i])+b*(s[x]-s[i] ...

  6. 1911: [Apio2010]特别行动队

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MB Submit: 4061  Solved: 1922 [Submit][Sta ...

  7. [APIO2010]特别行动队

    题面在这里 题意 你有一支由\(n\)名预备役士兵组成的部队,士兵从\(1\)到\(n\)编号,要将他们拆分 成若干特别行动队调入战场. 出于默契的考虑,同一支特别行动队中队员的编号应该连续,即为形如 ...

  8. [APIO2010] 特别行动队

    题目描述 你有一支由n名预备役士兵组成的部队,士兵从1到n编号,要将他们拆分成若干特别行动队调入战场.出于默契考虑,同一支特别行动队中队员的编号应该连续,即为形如(i,i+1,-,i+k)的序列. 编 ...

  9. 【斜率优化】[APIO2010]特别行动队

    题目 题目描述 你有一支由 nn 名预备役士兵组成的部队,士兵从 11 到 nn 编号,你要将他们拆分成若干特别行动队调入战场.出于默契的考虑,同一支特别行动队中队员的编号应该连续,即为形如 (i, ...

最新文章

  1. 使用脚本恢复Windows XP系统的用户密码
  2. mysql在没有任何用户的情况下,如何恢复
  3. [以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用
  4. boost::ptr_container::indirect_fun相关的测试程序
  5. hibernate_和ORM的关系
  6. [2014.5.22][UBUNTU]Ubuntu与Windows系统时间不同步的问题
  7. 前端学习(3321):瀑布流的方式演示
  8. THREEJS - 利用UV偏移模拟传送带运动
  9. linux下创建svn仓库及用户
  10. ACM 学习笔记(五) 动态规划
  11. ecshop中$user对象
  12. 周界防护在安防行业重要性与日俱增
  13. Dynamics 365Online 模板(Template)可以下载了
  14. QCC3005 控制AMP_Mute的管脚配置问题
  15. 三次Hermite插值
  16. oj1029统计素数并求和
  17. 前端面试之----跨域解决方案之一(CORS)
  18. 关于工商银行网站打不开的问题终极解决办法
  19. 网页audio标签中autoplay自动播放音乐失败解决方案
  20. Python性能分析利器pyinstrument讲解

热门文章

  1. JS组件系列——Bootstrap 树控件使用经验分享 - 懒得安分 - 博客园
  2. javascript --- vue中简单的模板渲染
  3. javascript --- [FormData的使用] 表单元素转换成表单 对象二进制文件上传
  4. Windows线程调度学习(一)
  5. iOS应用内付费(IAP)开发步骤列表
  6. 对GCD的一些理解和实践
  7. openssl工具的使用以及创建私有CA
  8. 企业使用RTX腾讯通2013
  9. Ubuntu 安装 JDK 问题
  10. 你可能不知道的跨域解决方案