小咪买东西

小咪买东西

https://ac.nowcoder.com/acm/problem/14662

求单位最值,考虑01分数规划;
x=∑a[i]/∑b[i],所以∑a[i]-x*∑b[i]=0图片说明 ∑ ( a[i] - x * b[i] )
枚举x,取k个物品,看代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const double esp=0.000001;
int main()
{
    int t,n;
    cin>>t;
    while(t--)
    {
        int k;
        double w[101000],v[110000],sum[110000];
        double max1=0;
        cin>>n>>k;
        for(int i=1;i<=n;i++) cin>>w[i]>>v[i];
            double l=0,r=1000000,mid;
            while(abs(r-l)>esp)
            {
                 mid=(l+r)/2.0;
                for(int i=1;i<=n;i++) sum[i]=v[i]-mid*w[i];//算出每个物品的比值,如果小于0,则比值<mid,大于等于0,则>=mid
                sort(sum+1,sum+1+n);//排序,选择比值较大的
                double total=0;
                for(int i=n;i>n-k;i--) total+=sum[i];//取k个
                if(total>=0.0) l=mid;//如果total>=0,说明mid可以取到
                else r=mid;
            }
          cout<<int(mid)<<endl;
    }

}
全部评论

相关推荐

hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务