/*
這題是斜率優化的入門題
**數形結合在資訊學競賽中的應用中講得很好,這是其中的例二;
在此標記個人理解上覺得重要的地方;
首先這題求max即看成求最大斜率...
*/#include #include #include using namespace std;
typedef long long ll;
const int nn=100005;
int n,k,f,r;
ll s[nn];
struct node
node(int _x,int _y):x(_x),y(_y){}
}q[nn];
ll mult(node p1,node p2,node p0)
//比較斜率檢查隊尾是否是上凸點
ll get() //用scanf時tle了,用外掛程式才過(400ms+)
int main()
f=-1; r=0; ans=0.0;
for (int i=k; i<=n; i++)
就不能這麼寫了
ans=max(ans,(double)(s[i]-q[f].y)/(double)(i-q[f].x));
}printf("%.2f\n",ans);
}return 0;
}
HDU 2993 (斜率DP 讀入優化)
題意 求給n個數的序列求最大的連續k個數的平均值 題解 n很大肯定不能乙個乙個試所有但是是我們發現 pre i pre j i j 如果把i,j看著橫座標pre i pre j 看做縱座標的話就是求斜率了,然後此時可以用斜率優化一下如下圖 然後我們就可以在去頭的是當佇列的第二個滿足第乙個圖的條件就可...
HDU3507 斜率優化
r 題意 把n分成任意段 每段中連續 每一段代價 ci m 求總的最小代價 i l作為提醒自己的經驗題,即使再水也要記住坑點 其實是自己被坑的地方 斜率優化裸題 首先定義dp i 表示把前i個處理好的最小代價 dp i min 一看這個轉移就是n 2的,我們來搞成o n 的。h i m sum i ...
hdu 3507 斜率優化
我的第一道斜率優化。就這道題而言,寫出原始的方程 dp i min o n 2 的複雜度肯定超時,要麼優化轉移,要麼重寫方程。斜率優化的思想就是減少不必要的列舉 即不列舉肯定不會成為決策點的j 我們考慮兩個位置p 選擇q比選擇p優 當且僅當 dp q sum i sum q 2 m dp p sum...