題目:給出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...