51Nod-1257-背包问题 V3

来源:互联网 发布:marginnote windows版 编辑:程序博客网 时间:2024/04/29 15:27

ACM模版

描述

描述

题解

典型的0-1分数规划,二分单位体积价值即可。

0-1分数规划属于较简单易学的算法,本以为背包问题 V3一定是一个更难的动态规划,谁知道只是一个二分。不懂0-1分数规划的可以看看参考一栏的 blog,其实很简单的,只要知道0-1分数规划,这个题可以算是5级题比较简单的问题了。

代码

#include <iostream>#include <algorithm>#include <cstdio>#include <cmath>using namespace std;const int MAXN = 5e4 + 10;const double ESP = 1e-6;int N, K;struct article{    int W, P;    double unit;} atc[MAXN];int gcd(int a, int b){    if (b == 0)    {        return a;    }    return gcd(b, a % b);}int cmp(article a, article b){    return a.unit > b.unit;}int charge(int &x, int &y, double m){    for (int i = 0; i < N; i++)    {        atc[i].unit = atc[i].P - atc[i].W * m;    }    sort(atc, atc + N, cmp);    x = y = 0;    double temp = 0;    for (int i = 0; i < K; i++)    {        x += atc[i].P;        y += atc[i].W;        temp += atc[i].unit;    }    if (temp >= 0)    {        return 1;    }    else    {        return 0;    }}int main(int argc, const char * argv[]){    cin >> N >> K;    for (int i = 0; i < N; i++)    {        scanf("%d%d", &atc[i].W, &atc[i].P);    }    double left = 0, right = MAXN, mid;    int z = 0, m = 0, x, y;    while (fabs(right - left) > ESP)    {        mid = (left + right) / 2;        if (charge(x, y, mid))        {            left = mid;            z = x;            m = y;        }        else        {            right = mid;        }    }    int temp = gcd(z, m);    z /= temp;    m /= temp;    printf("%d/%d\n", z, m);    return 0;}

参考

《0-1分数规划》

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小婴儿体重不长怎么办 2岁半宝宝不说话怎么办 米兰叶子掉光了怎么办 qq雷霆战机闪退怎么办 微信限额20万怎么办 欧拉方程x<0怎么办 柿子核吃下去了怎么办 橡胶底白色变黄怎么办 20了丁丁还很小怎么办 5角硬币吞进肚子怎么办 孩子吞了5角硬币怎么办 左腿比右腿微粗怎么办 一个腿长一个腿短怎么办 刚买的毛笔很硬怎么办 我哥哥太爱我了怎么办 如果婚姻无法维持该怎么办 捡了一只流浪狗怎么办 微博加载不出来怎么办 我的脾气很暴躁怎么办 歌单恢复已删除怎么办 家里破产了我该怎么办 对付有心计的人怎么办 上嘴唇无故肿了怎么办 下嘴唇肿了一半怎么办 狗狗早上叫不停怎么办 狗在家乱咬东西怎么办 狗狗晚上一直叫怎么办 金毛幼犬晚上叫怎么办 金毛晚上老是叫怎么办 5岁宝宝总尿裤子怎么办 2岁宝宝尿裤子怎么办 2周岁宝宝尿裤子怎么办 5岁宝宝尿裤子怎么办 模拟人生4不怀孕怎么办 狗狗的毛打结怎么办 狗狗生病了不吃东西怎么办 给领导送礼不收怎么办 国外弃货,货代怎么办 不小心拜了阴庙怎么办 要考试了不想考怎么办? 刚怀孕喝了红酒怎么办