POJ 2976最簡單的 01分數規劃

2021-08-22 04:28:44 字數 1025 閱讀 9684

題目:給出n個a和b,讓選出n-k個使得

二分法(二分乙個mid看是否存在這樣的一組解,不斷縮小區間逼近最優值)

#include#include#include#includeusing namespace std;

typedef long long ll;

#define eps 1e-6

#define inf 1e12

const int maxn=1010;

int n,k;

int a[maxn],b[maxn];

double y[maxn];

bool check(double x)

void solve()

printf("%.0f\n",l*100.0);

}int main()

return 0;

}

dinkelbach演算法 (本質是一種迭代演算法,基於這樣的思想:不去二分答案,而是先隨便給定乙個答案,然後根據更優的解不斷移動答案,逼近最優解。理論上它比二分快些。 在這個演算法中,一般將ans初始化為0)

#include#include#include#includeusing namespace std;

typedef long long ll;

#define eps 1e-6

#define inf 1e12

const int maxn=1010;

struct nodes[maxn];

bool cmp(const node &a,const node &b)

int n,k;

double dinkelbach()

ans=u/d;

if(fabs(ans-x)

return ans;

}}int main()

return 0;

}

poj 2976 基礎01分數規劃

這個題算是01分數規劃的最基本的應用了,01分數規劃是給你n對數 a1,b1 an,bn 然後讓你選擇一些數對,使得sigma ai sigma bi 最大。這裡附上講解乙份,如下 include include include include include using namespace std...

poj2976 二分 01分數規劃

題意 給出 n 1 1000 k 0 1000000000 代表有 n 個科目的成績,每個科目成績都有 a,b 兩種成績,後給出 n 個 a 和 n 個 b 的成績。現要使 y 達到最大,當去除 k 個科目的成績之後,y 最大能取到多大。思路 二分搜尋。y 所以100 sigema a y sige...

0914 01分數規劃(基礎篇) POJ2976

傳送門 分析 這個就是典型的01分數規劃,最最普通的那種 題外話 poj真的有毒 不要用 lf 輸出 而且我也不知道怎麼講啊 直接上 吧 include include include include include define n 1009 define eps 1e 10 using name...