[BZOJ1911]特别行动队
来源:互联网 发布:大型企业网络建设论文 编辑:程序博客网 时间:2024/04/28 19:08
题目描述
题解
我们可以得到裸的dp:
然后展开。
然后整理,准备斜率优化,最后得到
然后就可以愉快的斜率优化了。
代码
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#define F(i,j,n) for(int i=j;i<=n;i++)#define D(i,j,n) for(int i=j;i>=n;i--)typedef long long ll;const int maxn = 100000+10;using namespace std;int n,l,r;ll a,b,c,q[maxn],f[maxn],s[maxn];inline int read(){ int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}inline double getk(int x,int y){ return (double)((f[x]+a*s[x]*s[x]-b*s[x])-(f[y]+a*s[y]*s[y]-b*s[y]))/(double)(s[x]-s[y]);}int main(){ n=read();a=read();b=read();c=read(); F(i,1,n) s[i]=s[i-1]+read(); l=r=1;q[1]=0; F(i,1,n) { while (l<r&&getk(q[l],q[l+1])>a*s[i]*2) l++; f[i]=f[q[l]]+a*s[q[l]]*s[q[l]]-b*s[q[l]]-a*s[i]*s[q[l]]*2+a*s[i]*s[i]+b*s[i]+c; while (l<r&&getk(q[r-1],q[r])<getk(q[r],i)) r--; q[++r]=i; } printf("%lld\n",f[n]); return 0;}
阅读全文
0 0
- [bzoj1911]特别行动队
- [BZOJ1911]特别行动队
- [Bzoj1911][Apio2010]特别行动队
- bzoj1911 [Apio2010]特别行动队
- APIO2010特别行动队bzoj1911
- bzoj1911&CodeVS1318 特别行动队
- [BZOJ1911][Apio2010]特别行动队
- [BZOJ1911] [Apio2010]特别行动队
- BZOJ1911: [Apio2010]特别行动队
- bzoj1911【APIO2010】特别行动队
- BZOJ1911 Apio2010 特别行动队
- bzoj1911[Apio2010] 特别行动队
- 【APIO2010】bzoj1911 特别行动队
- bzoj1911: [Apio2010]特别行动队
- bzoj1911: [Apio2010]特别行动队
- bzoj1911 [Apio2010]特别行动队
- 【BZOJ1911】【APIO2010】特别行动队
- BZOJ1911: [Apio2010]特别行动队
- NB贝叶斯平凡而又神奇的贝叶斯方法
- 测试小故事29:开窗和不开窗
- web.xml中openEntityManagerInViewFilter的作用
- linux centos7 下安装mysql (rpm包安装)
- UE4 制作自己的模板
- [BZOJ1911]特别行动队
- java四种元注解
- python模块serial\urllib
- VS2010 解决This function or variable may be unsafe
- PHP session失效,session无法传递,不写session文件
- 初学Java005 Java常用数据类型及变量
- 移动应用界面设计的尺寸设置及规范
- Ubuntu 安装文件对比工具Meld
- 全志R16平台的android6.0.1系统下的RTL8188EU的配置V1.0(分色排版)