亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

斜率優化

2019-11-10 19:39:13
字體:
來源:轉載
供稿:網友

http://www.lydsy.com/JudgeOnline/PRoblem.php?id=1010 Description P教授要去看奧運,但是他舍不下他的玩具,于是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮,其可以將任意物品變成一堆,再放到一種特殊的一維容器中。P教授有編號為1…N的N件玩具,第i件玩具經過壓縮后變成一維長度為Ci.為了方便整理,P教授要求在一個一維容器中的玩具編號是連續的。同時如果一個一維容器中有多個玩具,那么兩件玩具之間要加入一個單位長度的填充物,形式地說如果將第i件玩具到第j個玩具放到一個容器中,那么容器的長度將為 x=j-i+Sigma(Ck) i<=K<=j 制作容器的費用與容器的長度有關,根據教授研究,如果容器長度為x,其制作費用為(X-L)^2.其中L是一個常量。P教授不關心容器的數目,他可以制作出任意長度的容器,甚至超過L。但他希望費用最小. Input 第一行輸入兩個整數N,L.接下來N行輸入Ci.1<=N<=50000,1<=L,Ci<=10^7 Output 輸出最小費用 Sample Input 5 4 3 4 2 1 4 Sample Output 1

先列出n^2的dp: dp[i]=min(dp[j]+(sum[i]-sum[j]+i-j-1-L)^2) (j < i) 然后設循環中的k是最右解,j是普通解,列出不等式,化簡成一側是f【i】的,左側是/的形式: (dp[k]+(f[k]+c)^2-dp[j]-(f[j]+c)^2)/2*(f[k]-f[j])<=f[i] 每個點是( (dp[k]+(f[k]+c)^2), 2*f[k] )

本來是把正常小于i的所有j循環,找最大的k…然后現在為了快點找k 所以推出這個關系, 對于所有j和那個點連起來斜率都小于等于f[i]的就是k,于是用f[i]去找最右下的點。 顯然如果出現上凸的,用f[i]平移的話,最后一定不會是這個點,就沒用了。所以就是個下凸的凸包。。。維護上面的點即可,還是個單調隊列,不用二分找這個點,因為對于當前i滿足這個式子的k和j對于i+1。。。f[i+1]>f[i]。所以一定還滿足這個式子。。。就是個單調隊列了=。=從頭找,不合法的對后面的答案沒有用了,就刪掉(head++),找到第一個就一定是這個點,因為考慮圖形是斜率逐漸增大的,第一個找到的點就是最右下的!

#include <cstdio>#include <iostream>#include <cstring>typedef long long LL;using namespace std;int n;const int nn=51000;LL l,c[nn],L;LL dp[nn];LL sum[nn];struct pll{ long long first,second; int pos;} stak[nn],tmp;int head,last;int cross(pll a,pll b,pll c){ return (b.first-a.first)*(c.second-a.second)-(c.first-a.first)*(b.second-a.second) > 0;}LL read(){ LL 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;}void add(LL x,LL y,int i){ // cout <<"x = "<<x <<" y = "<<y<<endl; while(last > head){ tmp.first = x,tmp.second = y,tmp.pos = i; if(cross(stak[last-1],stak[last],tmp)) break; last--; } stak[++last].first = x; stak[last].second = y; stak[last].pos = i; // cout << stak[last].first <<" "<<stak[last].second<<endl;}void init(){// scanf("%d",&n);// cin>>l;// l++;// for(int i = 1 ;i <= n;i++){// cin>>c[i];//scanf("%I64d",&c[i]);// sum[i]=sum[i-1]+c[i];// }// for(int i = 1; i <= n ; i++)// sum[i] += i; n=read();L=read();l=L+1; for(int i=1;i<=n;i++)c[i]=read(); for(int i=1;i<=n;i++)sum[i]=sum[i-1]+c[i]; for(int i=1;i<=n;i++)sum[i]+=i;}double sp(pll k,pll j){ // cout <<" "<<(j.first-k.first)<<endl; return (j.second-k.second)/(j.first-k.first);}double check(int j,int k){ return (dp[k]+(sum[k]+l)*(sum[k]+l)-dp[j]-(sum[j]+l)*(sum[j]+l))/(2.0*(sum[k]-sum[j]));}void sov(){ dp[0]=0; head = 1; last = 1; stak[1].first = stak[1].second = stak[1].pos = 0; for(int i=1;i<=n;i++){ // cout <<i <<endl; while(head < last && check(stak[head].pos,stak[head+1].pos)<=sum[i]) head++; int t = stak[head].pos; // cout<<"t = "<<t<<endl; // printf("sum[%d] = %I64d sum[%d] = %I64d /n",i,sum[i],t,sum[t]); dp[i] = dp[t]+(sum[i]-sum[t]-l)*(sum[i]-sum[t]-l); // cout<<"dp = "<<dp[i]<<endl; // add(2*sum[i],dp[i]+(sum[i]+l)*(sum[i]+l),i); tmp.first = 2*sum[i];tmp.second = dp[i]+(sum[i]+l)*(sum[i]+l);tmp.pos = i; while(head < last && check(stak[last].pos,tmp.pos)< check(stak[last-1].pos,stak[last].pos))last--; stak[++last]=tmp; // cout <<"y = "<<dp[i]+(sum[i]+l)*(sum[i]+l) << " x = "<<2*sum[i]<<endl; }// for(int i = 1; i <= n ; i++)// printf("dp[%d] = %I64d/n",i,dp[i]); cout<<dp[n]<<endl;//printf("%I64d/n",dp[n]);}int main(){ init(); sov(); return 0;}

特別行動隊。 http://www.lydsy.com/JudgeOnline/problem.php?id=1911 上凸包,其實可以直接判斷等式,而不用叉乘判斷凸包,都一樣。

#include <cstdio>#include <iostream>#include <cstring>using namespace std;int n,A,B,C,head,last;const int maxn = 1e6+10;long long a[maxn],sum[maxn],f[maxn],q[maxn];void init(){ scanf("%d",&n); scanf("%d%d%d",&A,&B,&C); for(int i = 1; i <= n ; i++){ scanf("%lld",&a[i]); sum[i] = sum[i-1]+a[i]; }}double check(int j,int k){ return (double)(f[k]-f[j]+A*((sum[k]*sum[k])-(sum[j]*sum[j]))+B*(sum[j]-sum[k]))/(2.0*(sum[k]-sum[j])*A);}void sov(){ head = last = 1;q[1] = 0; for(int i = 1; i <= n ; i++){ while(head < last && check(q[head],q[head+1]) <= sum[i]) head++; f[i] = f[q[head]]+A*(sum[i]-sum[q[head]])*(sum[i]-sum[q[head]])+B*(sum[i]-sum[q[head]])+C; while(head < last&& check(q[last-1],q[last]) > check(q[last],i)) last--; q[++last] = i; } printf("%lld/n",f[n]);}int main(){ init(); sov();}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产美女久久久| 成人黄在线观看| 成人在线视频福利| 国产精品免费观看在线| 精品色蜜蜜精品视频在线观看| 韩国美女主播一区| 亚洲美女www午夜| 国产mv免费观看入口亚洲| 日韩av中文在线| 全亚洲最色的网站在线观看| 久久精品男人天堂| 26uuu日韩精品一区二区| 欧美日韩亚洲一区二区| 日本久久久久久久久| 国产日韩欧美日韩大片| 精品成人国产在线观看男人呻吟| 宅男66日本亚洲欧美视频| 亚洲精品综合精品自拍| 亚洲女人被黑人巨大进入| 国产精品com| 中文字幕国产精品| 中文字幕成人精品久久不卡| 欧美裸体视频网站| 永久免费精品影视网站| 成人妇女免费播放久久久| 亚洲区在线播放| 欧美精品久久久久久久免费观看| 国产一区二区欧美日韩| 69精品小视频| 亚洲电影在线观看| 国产精品久久久| 91精品啪aⅴ在线观看国产| 亚洲一区二区三区在线免费观看| 韩国v欧美v日本v亚洲| 日韩高清电影免费观看完整| 97久久精品在线| 久久成人18免费网站| 亚洲精品国产成人| 日韩精品在线视频美女| 狠狠躁夜夜躁久久躁别揉| 亚洲国产精品久久精品怡红院| 精品久久久精品| 国产成人精品综合久久久| 国产精品ⅴa在线观看h| 欧美成人网在线| 日本老师69xxx| 亚洲精品一区久久久久久| 91精品久久久久久久久| 亚洲色图欧美制服丝袜另类第一页| 久久久久久久久久国产精品| 91精品国产九九九久久久亚洲| 成人免费在线视频网址| 亚洲日本中文字幕免费在线不卡| 亚洲丁香婷深爱综合| 91成人性视频| 人妖精品videosex性欧美| 亚洲欧美日韩爽爽影院| 91精品久久久久久久久中文字幕| 96精品久久久久中文字幕| 日韩av黄色在线观看| 色系列之999| 国产精品96久久久久久| 亚洲一区美女视频在线观看免费| 亚洲成色777777在线观看影院| 色综合色综合久久综合频道88| 91超碰中文字幕久久精品| 国产99久久精品一区二区 夜夜躁日日躁| 欧美在线一区二区三区四| 亚洲美女在线观看| 久久99热精品| 亚洲国产精品嫩草影院久久| 欧美日韩成人在线观看| 国产精品自拍偷拍| 欧美专区在线播放| 国产99久久精品一区二区 夜夜躁日日躁| 国产成人极品视频| 国产日产欧美a一级在线| 日韩欧美在线观看视频| 欧美床上激情在线观看| 国产精品自拍小视频| 91精品国产高清久久久久久91| 亚洲国产中文字幕在线观看| 精品高清一区二区三区| 国产精品精品久久久久久| 久久噜噜噜精品国产亚洲综合| 国产精品一二区| 亚洲国产精品va在线| 不卡伊人av在线播放| 亚洲一区av在线播放| 疯狂蹂躏欧美一区二区精品| 久久激情五月丁香伊人| 欧美亚洲国产日本| 亚洲欧美www| 91色视频在线观看| 日韩国产在线播放| www.国产精品一二区| 在线精品视频视频中文字幕| 亚洲美女精品成人在线视频| 国产成人黄色av| 亚洲欧美www| 国产精品91免费在线| 国产网站欧美日韩免费精品在线观看| 亚洲视频网站在线观看| 国产激情999| 91国语精品自产拍在线观看性色| 国产精品久久久久久婷婷天堂| 日韩有码在线观看| 日韩av在线免费观看| 亚洲淫片在线视频| 亚洲人午夜色婷婷| 久久婷婷国产麻豆91天堂| 亲子乱一区二区三区电影| 日韩第一页在线| 尤物精品国产第一福利三区| 精品久久久久久久久久久久久| 日韩久久免费电影| 国产日韩欧美另类| 亚洲一区二区三区成人在线视频精品| 国产成人亚洲综合| 国产一区二区三区欧美| 亚洲毛片在线免费观看| 亚洲欧美激情视频| 亚洲精品美女视频| 国产成人精品一区二区在线| 97婷婷涩涩精品一区| 国产精品美女无圣光视频| 亚洲天堂av高清| 日韩成人av一区| 一本一本久久a久久精品综合小说| 国产亚洲人成a一在线v站| 日韩在线观看精品| 国产综合色香蕉精品| 亚洲男人av在线| 久久久久久九九九| 中文字幕日韩欧美在线视频| 日韩美女在线播放| 另类美女黄大片| 久久伊人91精品综合网站| 97激碰免费视频| 亚洲网站在线播放| 日韩免费在线视频| 色综合男人天堂| 国产丝袜一区二区三区免费视频| 亚州av一区二区| 国产欧美日韩丝袜精品一区| 国产精品久久久久aaaa九色| 欧美亚洲另类制服自拍| 欧洲日韩成人av| 亚洲社区在线观看| 欧美二区乱c黑人| 国产精品∨欧美精品v日韩精品| 日韩欧美在线看| 中日韩美女免费视频网站在线观看| 亚洲国产精品大全| 国产成人精品免费视频| 亚洲男人天堂网| 久久精品中文字幕| 国产欧美精品一区二区三区介绍| 欧美最猛性xxxxx(亚洲精品)| 亚洲a在线观看| 国产精彩精品视频| 国产精品欧美日韩一区二区| 在线视频免费一区二区| 国产精品高潮呻吟视频|