zoukankan      html  css  js  c++  java
  • 玲珑杯 1125 咸鱼商店

    SAMPLE INPUT
    3 10 1
    1 2
    10 1
    5 5
    SAMPLE OUTPUT
    5
    对价值排序,每次二分价值,剩下的就是一个典型的01背包问题。
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    #include <vector>
    #include <queue>
    #include <cmath>
    #include <ctime>
    #include <map>
    #include <set>
    using namespace std;
    #define lowbit(x) (x&(-x))
    #define max(x,y) (x>y?x:y)
    #define min(x,y) (x<y?x:y)
    #define MAX 100000000000000000
    #define MOD 1000000007
    #define pi acos(-1.0)
    #define ei exp(1)
    #define PI 3.141592653589793238462
    #define INF 0x3f3f3f3f3f
    #define mem(a) (memset(a,0,sizeof(a)))
    typedef long long ll;
    int n,m,k,ans;
    int dp[1006];
    struct Node
    {
        int cost;
        int val;
        friend bool operator<(const Node &a,const Node &b)
        {
            return a.val>b.val;
        }
    }node[1006];
    int check(int mid)
    {
        int i;
        memset(dp,0,sizeof(dp));
        for(i=0;i<n;i++)
        {
            if(node[i].val<mid) break;
            for(int j=m;j>=node[i].cost;j--)
            {
                dp[j]=max(dp[j],dp[j-node[i].cost]+node[i].val);
            }
        }
        for(int i=0;i<=m;i++)
        {
            if(dp[i]>=k)
            {
                return 1;
            }
        }
        return 0;
    }
    int main()
    {
        scanf("%d%d%d",&n,&m,&k);
        for(int i=0;i<n;i++)
        {
            scanf("%d%d",&node[i].cost,&node[i].val);
        }
        sort(node,node+n);
        int l=0,r=1000000,ans=-1;
        while(l<=r)
        {
            int mid=(l+r)>>1;
            if(check(mid)==1)
            {
                ans=mid;
                l=mid+1;
            }
            else r=mid-1;
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    [2020.12.5周六]Boruvka
    [2020.12.4周五] 圆上对称博弈
    [2020.12.3周四]最长上升子序列
    置顶~ 未来半年内训练计划
    cf1473d
    cf1474D
    寒假复健第一天 cf1475D
    来啦来啦,寒假复健第一题cf1475g
    12.1加训总结 2019南京
    12.7-12.13训练计划
  • 原文地址:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/7219395.html
Copyright © 2011-2022 走看看