1. 程式人生 > >[DP 四邊形不等式優化] 51Nod 1022 石子歸併 V2

[DP 四邊形不等式優化] 51Nod 1022 石子歸併 V2

蒟蒻不會四邊形不等式

形如

fi,j=min{fi,k+fk+1,j+wi,j}的方程 且滿足四邊形不等式和區間包含單調性 就可以用四邊形不等式優化
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;

inline char nc(){
  static char buf[100000],*p1=buf,*p2=buf;
  if (p1==p2) { p2=(p1=buf)+fread(buf,1
,100000,stdin); if (p1==p2) return EOF; } return *p1++; } inline void read(int &x){ char c=nc(),b=1; for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1; for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b; } const int N=2005; int n; int a[N]; ll sum[N]; ll f[N][N]; int
s[N][N]; inline ll w(int l,int r){ return sum[r]-sum[l-1]; } int main(){ freopen("t.in","r",stdin); freopen("t.out","w",stdout); read(n); for (int i=1;i<=n;i++) read(a[i]),a[n+i]=a[i]; n<<=1; for (int i=1;i<=n;i++) sum[i]=sum[i-1]+a[i]; memset(f,0x3f,sizeof(f)); for (int i=1
;i<=n;i++) f[i][i]=0,s[i][i]=i; for (int i=2;i<=n/2;i++) for (int l=1;l+i-1<=n;l++){ int r=l+i-1; for (int k=s[l][r-1];k<=s[l+1][r];k++) if (f[l][r]>f[l][k]+f[k+1][r]+w(l,r)) f[l][r]=f[l][k]+f[k+1][r]+w(l,r),s[l][r]=k; } ll ans=1LL<<30; for (int i=1;i<=n/2;i++) ans=min(ans,f[i][i+n/2-1]); printf("%lld\n",ans); return 0; }

相關推薦

[DP 四邊形不等式優化] 51Nod 1022 石子歸併 V2

蒟蒻不會四邊形不等式 形如 fi,j=min{fi,k+fk+1,j+wi,j}的方程 且滿足四邊形不等式和區間包含單調性 就可以用四邊形不等式優化 #include<cstdio> #

[dp專題-四邊形不等式優化]51nod 1022

1021石子歸併 V1N堆石子擺成一條線。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的代價。計算將N堆石子合併成一堆的最小代價。 例如: 1 2 3 4,有不少合併方法 1 2 3 4 => 3 3 4(3)

51nod oj 1022 石子歸併 V2 【環形區間DP----四邊形不等式優化

題目傳送門:1022 四邊形不等式優化: m[i,j]=min{m[i,k]+m[k,j]}(s[i,j-1]≤k≤s[i+1,j]) 當m[i,j]=min{m[i,k]+m[k,j]}(i≤

石子歸併(區間dp & 四邊形不等式優化

基準時間限制:1 秒 空間限制:131072 KB 分值: 20 難度:3級演算法題  收藏  取消關注 N堆石子擺成一條線。現要將石子有次序地合併成一堆。規定每次只能

藍橋杯 合併石子 DP+四邊形不等式優化

  演算法提高 合併石子   時間限制:2.0s   記憶體限制:256.0MB 問題描述   在一條直線上有n堆石子,每堆有一定的數量,每次可以將兩堆相鄰的石子合併,合併後放在兩堆

區間dp+四邊形不等式優化

mes 取數 列數 scan 自己 min oid 表示 \n 區間dp+四邊形優化 luogu:p2858 題意 給出一列數 \(v_i\),每天只能取兩端的數,第 j 天取數價值為\(v_i \times j\),最大價值?? 轉移方程 dp[i][j] :n天賣掉i.

51Nod 1022 石子歸並 V2(區間DP+四邊形優化

增加 pre 分享 ems 滿足 log 如果 算法 技術 題目鏈接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1022 題目大意: N堆石子擺成一個環。現要將石子有次序地合並成一堆。規定

石子歸併 (四邊形不等式優化

石子歸併 (四邊形不等式優化 感覺很有 不靠譜 道理 顯然樸素演算法是\(O(n^3)\)的 \(f[i][j]\)表示i到j花費的最小价值 \(f[i][j] = min(f[i][k - 1] + f[k][j] + sum[j] - sum[i - 1])\) 通過打表打出中間點K的方式 我們會發現

動態規劃練習-環狀石子歸併+四邊形不等式優化

思路:環狀的直接在n後面加上a[0]-a[n]變成鏈狀即可。 這題範圍小,如果n<1000,則必須四邊形不等式優化降低複雜度為O(n^2) Code: #include <bi

POJ 1160 Post Office (四邊形不等式優化DP)

open memset cpp 。。 ios ems max while ctype 題意: 給出m個村莊及其距離,給出n個郵局,要求怎麽建n個郵局使代價最小。 析:一般的狀態方程很容易寫出,dp[i][j] = min{dp[i-1][k] + w[k+1][j]},表示

【轉】斜率優化DP四邊形不等式優化DP整理

dex add ive mat 整理 off code 斜率dp 好的 當dp的狀態轉移方程dp[i]的狀態i需要從前面(0~i-1)個狀態找出最優子決策做轉移時 我們常常需要雙重循環 (一重循環跑狀態 i,一重循環跑 i 的所有子狀態)這樣的時間復雜度是O(N^2)而 斜

POJ1160 Post Office (四邊形不等式優化DP

single inpu cst class pac ios 不等式 lang rep There is a straight highway with villages alongside the highway. The highway is represented as

四邊形不等式優化DP

pla mes npos 石子歸並 分享 max turn 四邊形 namespace 記錄一下,以免忘了 對於一個形如 \[dp[i][j]=min(dp[i][k]+dp[k][j]+w[i][j])\] 的轉移方程(註意取最大值時不一定滿足四邊形不等式) 定理1 若對

BZOJ1563/洛谷P1912 詩人小G 【四邊形不等式優化dp

set har 方案 zoj #define 證明 isp 現在 fine 題目鏈接 洛谷P1912【原題,需輸出方案】 BZOJ1563【無SPJ,只需輸出結果】 題解 四邊形不等式 什麽是四邊形不等式? 一個定義域在整數上的函數\(val(i,j)\),滿足對\(\fo

郵局加強版:四邊形不等式優化DP

一個 ica 成了 除了 i+1 -a 都是 bit oid 題目描述 一些村莊建在一條筆直的高速公路邊上,我們用一條坐標軸來描述這條公路,每個村莊的坐標都是整數,沒有兩個村莊的坐標相同。兩個村莊的距離定義為坐標之差的絕對值。我們需要在某些村莊建立郵局。使每個村莊使用與它距

CodeForces - 321E:Ciel and Gondolas (四邊形不等式優化DP

題意:N個人排成一行,分成K組,要求每組的不和諧值之和最小。 思路:開始以為是斜率優化DP,但是每個區間的值其實已經知道了,即是沒有和下標有關的未知數了,所以沒必要用斜率。 四邊形優化。 dp[i][j]表示前j個人分為i組的最小代價。 #include<bits/stdc++.h>

區間dp四邊形不等式優化 學習筆記

部落格目錄 很久之前在網上看了傳說中的四邊形不等式,然後現在發現忘光了。趁比賽前夕趕快拿來熟悉一下。 一、引入 形如: dp[i][j]=min{dp[i][k]+dp[k+1][j]+cost[i][j]} 的狀態轉移方程,如果不加優化的話ijk三層迴圈O(n

【總結】從詩人小G談DP四邊形不等式優化

四邊形不等式 設w(x,y)w(x,y)w(x,y)是定義在整數集合上的二元函式。若對於定義域上的任何整數,a,b,c,d(a≤b≤c≤d)a,b,c,d(a\leq b\leq c\leq d)a

平行四邊形不等式優化DP——筆記

推很久推出方程後發現時間複雜度太大 TLE是不是很沮喪 優化方式及限定條件 來道例題 Post Office There is a straight highway with villages alongside the highway. The highway is r

平行四邊形不等式優化DP

一.前言 DP一直是程式設計中的一個難題,解決它不僅需要大量刷題,還需要學會各種DP的方法。這裡,我就主要講一個DP的優化方法:平行四邊形不等式優化DP動態規劃。(好難呀)     二.平行四邊形不等式是個啥? 1.題目引入:猴子派對 遠離我們的世界,