bzoj3437 小P的牧场
斜率优化n^2的DP
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int yp() 5 { 6 int x=0,f=0;char ch=getchar(); 7 while(ch<'0'||ch>'9'){if(ch=='-')f=1;ch=getchar();} 8 while(ch>='0'&&ch<='9')x*=10,x+=ch-'0',ch=getchar(); 9 return !f?x:-x; 10 } 11 int n,l=1,r,q[1000005]; 12 long long a[1000005],b[1000005],tot,ans,h[1000005],sum[1000005]; 13 double js(int a,int b) 14 { 15 return (1.*(h[b]-h[a]))/(1.*(a-b)); 16 } 17 int main() 18 { 19 n=yp(); 20 for(int i=1;i<=n;i++)a[i]=yp(); 21 for(int i=1;i<=n;i++)b[i]=yp(),sum[i]=sum[i-1]+b[i]; 22 for(int i=1;i<n;i++)tot+=b[i]*(n-i); 23 tot+=a[n],q[++r]=n; 24 for(int i=n-1;i;i--) 25 { 26 while(l<r&&js(q[l],q[l+1])>sum[i])l++; 27 int j=q[l]; 28 h[i]=h[j]+sum[i]*(j-i)-a[i]; 29 ans=max(ans,h[i]); 30 while(l<r&&js(q[r],i)>js(q[r-1],q[r]))r--; 31 q[++r]=i; 32 } 33 printf("%lld",tot-ans); 34 return 0; 35 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 我干了两个月的大项目,开源了!
· 推荐一款非常好用的在线 SSH 管理工具
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· 千万级的大表,如何做性能调优?
· .NET周刊【1月第1期 2025-01-05】