K Best POJ 3111 牛頓迭代法

2021-08-29 05:25:09 字數 751 閱讀 3495

傳送門

題意:有n個物品的重量和價值分別是wi和vi。從中選出k個物品使得單位重量的價值最大。

題解:先取前k個元素算出s0 =∑(vi/wi) 作為初始值,然後對每乙個元素(n個)求yi=vi-s0*wi,對yi從大到小排序,取前k個元素算出s,重複上面的運算(每次迴圈後把s的值賦給s0,然後新一輪迴圈時s有通過s0計算出來),直到fabs(s-s0)<=eps,滿足精度要求。

正確性證明:

假設上輪得到的s1,則在n個元素中必存在k個元素使s1=∑(vi/wi),變形可得到∑vi-s1*∑wi=0,現對每個元素求yi=vi-s1*wi,可知必存在k個元素使∑yi=∑vi-s1*∑wi=0, 所以當我們按y排序並取前k個元素作為求其∑y時,其∑y>=0,然後對和式變形即可得到s1=((∑v-∑y)/∑w)<=(∑v/∑w)=s2,即此迭代過程是∑y是收斂的,當等號成立時,此s即為最大值。

附上**:

#include#include#include#includeusing namespace std;

const int maxn=1e5+50;

const double eps=1e-8;

int n,k;

struct node;

node nodes[maxn];

bool cmp(node a,node b)

double get()

printf("\n");

return 0;

}

牛頓迭代 牛頓下山

2009 11 18 16 59 51 分類 計算方法數學類 字型大小 訂閱 牛頓迭代法,牛頓下山迭代 include include float newtonfun float x0,float c float xiashanfun float x0,float c float fun1 floa...

重聚 牛頓迭代

給出n和p,求最小的正整數x使得x p q 有斯特林公式n 2 n n e n 取個log得log n 0.5 log 2 pi n 0.5 log n n 然後log p q q log p 不過二分是過不去的 這個函式可以牛頓迭代,就是對於乙個x,在函式上做切線,與x軸的交點作為下一次的x 複雜...

牛頓法和牛頓迭代法

牛頓法,大致的思想是用泰勒公式的前幾項來代替原來的函式,然後對函式進行求解和優化。牛頓法和應用於最優化的牛頓法稍微有些差別。牛頓法用來迭代的求解乙個方程的解,原理如下 對於乙個函式f x 它的泰勒級數展開式是這樣的 f x f x 0 f x 0 x x 0 frac f x 0 x x 0 2 f...