看到題目,時間複雜度至少是o(n
logn
)o(nlogn)
o(nlog
n)或o (n
sqrt
(n))
o(nsqrt(n))
o(nsqr
t(n)
)前者的概率較大,此題有計算內乘積,應該與分塊無關(早就知道是斜率優化)
假設長為a
aa值,寬為bbb值
觀察題目, 可以猜想一下決策會不會有連續性,猜想決策可能與排序有關,先按長 (a
aa) 排序。在思考一會,就會發現該猜想是對的,因為每個總方案中,如果存在一組土地a
aa值不連續,那該方案一定不是唯一的最優解。
證明:假設存在乙個方案使得將土地按a
aa值公升序排列後存在i,j
,k
i,j,k
i,j,
k使得a
i a_ai 且i,k i,ki, k分在一組中,而j jj在另一組中。若b j b_jbj ,則將i,j ,k i,j,k i,j, k分在一組肯定會更優,因為其他不變,把j jj移動到i,k i,ki, k這一組,j jj原來的那組值會更小,而i,j ,k i,j,k i,j, k這一組不會變,因為j jj的長和寬在這一組中均不為最大值。同理,可證明另一種情況。(有興趣可以自行證明) 這樣,我們就可以先按a aa值排序。又因為如果某一塊土地b bb值比任何一塊在它右邊的土地小,那麼乙個最優解一定是將這塊土地與那塊土地合併,因為這樣不會產生任何影響,就可以去除滿足這個條件的土地 在這一步後,整個陣列也就是a aa值遞增,b bb值遞減,那麼簡單看一下就知道可以dp了 設f [i ]f[i] f[i] 為前i ii塊土地的最小花費 方程就是f[i ]=f[ j]+b [j+1 ]∗a[ i] f[i]=f[j]+b[j+1]*a[i] f[i]=f [j]+ b[j+ 1]∗a [i]看到乘積,自然想到斜率優化,pi( −b[j +1], f[i] ),ki =a[i ]p_(-b[j+1],f[i]),k_=a[i] pi(−b [j+1 ],f[ i]), ki= a[i] 就可以愉快的斜率優化了,時間複雜度o(n )o(n) o(n) cod e: code: code : using namespace std; #define int long long const int maxn= 50000 ;struct wa[maxn+10] ,b[maxn+10] ;struct pos[maxn+10] ;int f[maxn+10] ,q[maxn+10] ,fr,ed; inline bool cmp( const w& ,const w&); inline bool cmp_slope (po,po, int) ;inline bool cmp_slope2 (po,po,po) ;inline intread() ;signed main() stable_sort (a+1 ,a+n+ 1,cmp) ;for (register int i=n;i>=1; --i) n=fr; fr=0; for( register int i= 1;i<=n; ++i) b[i] =a[q[n-i+1] ];for( register int i= 1;i<=n; ++i) a[i] =b[i] ; s[0] .y=0 ; s[0] .x=-a[1] .b;for (register int i= 1;i<=n; ++i) printf ("%lld\n" ,f[n]); return0; }inline intread() inline bool cmp( const w &x, const w &y) inline bool cmp_slope (po x,po y, int k) inline bool cmp_slope2 (po x,po y,po z) 農夫john準備擴大他的農場,他正在考慮n 1 n 50,000 塊長方形的土地.每塊土地的長寬滿足 1 寬 1,000,000 1 長 1,000,000 每塊土地的 是它的面積,但fj可以同時購買多快土地.這些土地的 是它們最大的長乘以它們最大的寬,但是土地的長寬不能交換.如果fj買一塊3x5的... 題目戳這裡 2102912 kamisama123 1597 accepted 6076 kb 152 ms c edit 1171 b 2017 06 07 19 44 16 2102894 kamisama123 1597 accepted 6080 kb 160 ms c edit 982 b... description 農夫john準備擴大他的農場,他正在考慮n 1 n 50,000 塊長方形的土地.每塊土地的長寬滿足 1 寬 1,000,000 1 長 1,000,000 每塊土地的 是它的面積,但fj可以同時購買多快土地.這些土地的價 格是它們最大的長乘以它們最大的寬,但是土地的長寬不能...#include
bzoj1597 土地購買 斜率優化
bzoj 1597 土地購買(斜率優化dp)
BZOJ1597土地購買 斜率優化DP