日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【bzoj1010-toy】斜率优化入门模板

發布時間:2023/12/18 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【bzoj1010-toy】斜率优化入门模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

dsy1010: [HNOI2008]玩具裝箱

【題目描述】

n個數,分成連續的若干段,每段(假設從第j個到第i個組成一段)的分數為?(X-L)^2Xj-i+Sigma(Ck) i<=k<=j,其中L是一個常量。目標:各段分數的總和最小。

【輸入格式】

第一行:兩個整數NL.下來N個數字Ci.1<=N<=50000,1<=L,Ci<=10^7

【輸出格式】

一個整數,各段分數總和的值最小。

Sample Input

5 4

3?4?2?1?4

Sample Output

1

?

維護一個右下凸包。

?

1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<cmath> 5 #include<iostream> 6 #include<algorithm> 7 #include<queue> 8 using namespace std; 9 10 typedef long long LL; 11 const LL N=50010; 12 LL n,L,NL,f[N],sum[N],s[N],Q[N]; 13 14 // f[i]=a[i]*x[j]+b[j] 15 // LL=L+1 16 // a[i]=-2*(s[i]-LL) 17 // x[j]=s[j] 18 // b[j]=f[j]+s[j]^2 19 20 double X(LL i){return s[i];} 21 double Y(LL i){return f[i]+s[i]*s[i];} 22 double find_k(LL i,LL j){return (Y(j)-Y(i))/(X(j)-X(i));} 23 24 int main() 25 { 26 // freopen("a.in","r",stdin); 27 freopen("toy.in","r",stdin); 28 freopen("toy.out","w",stdout); 29 scanf("%lld%lld",&n,&L); 30 sum[0]=0;s[0]=0;NL=L+1; 31 for(int i=1;i<=n;i++) 32 { 33 LL x; 34 scanf("%lld",&x); 35 sum[i]=sum[i-1]+x; 36 } 37 for(int i=1;i<=n;i++) s[i]=sum[i]+i; 38 // for(LL i=1;i<=n;i++) printf("%d ",sum[i]);printf("\n"); 39 // for(LL i=1;i<=n;i++) printf("%d ",s[i]);printf("\n"); 40 LL l=0,r=0,j,ai,xj,bj,ti; 41 double k; 42 memset(f,0,sizeof(f)); 43 for(int i=1;i<=n;i++) 44 { 45 ai=(-2)*(s[i]-NL); 46 while(l<r && find_k(Q[l],Q[l+1])<=(-ai) ) l++; 47 j=Q[l]; 48 xj=s[j]; 49 bj=f[j]+s[j]*s[j]; 50 ti=(s[i]-NL)*(s[i]-NL); 51 f[i]=ai*xj+bj+ti; 52 while(l<r && find_k(Q[r],Q[r-1])>find_k(i,Q[r])) r--; 53 Q[++r]=i; 54 } 55 printf("%lld\n",f[n]); 56 return 0; 57 }

?

轉載于:https://www.cnblogs.com/KonjakJuruo/p/5890581.html

總結

以上是生活随笔為你收集整理的【bzoj1010-toy】斜率优化入门模板的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。