zoukankan      html  css  js  c++  java
  • P2370 yyy2015c01的U盘

    链接:Miku

    ----------------------------------------

    这是一道01背包+二分

    ---------------------------------------

    二分的部分很普通,至于check函数,也不过是忽略掉了所以比接口还大的物品而已

    ---------------------------------------

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int n,p,s;
    int dp[100000];
    int w[10000];
    int v[10000];
    int l,r=19260817;
    bool check(int k){
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;++i){
            if(w[i]<=k)
            for(int j=s;j>=w[i];--j){
                dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
            }
        }
        if(dp[s]>=p)
        return 1;
        return false;
    }
    int main(){
        scanf("%d%d%d",&n,&p,&s);
        for(int i=1;i<=n;++i){
            scanf("%d%d",&w[i],&v[i]);
        }
    //    cout<<43432;
        while(l<=r){
            int mid=l+(r-l)/2;
            if(check(mid)) r=mid-1;
            else
            l=mid+1;
        }
        if(l>=19260817)
        cout<<"No Solution!";
        else
        cout<<l;
        return 0;
    }
    Ac
  • 相关阅读:
    版本回退
    时光机穿梭
    创建版本库
    安装Git
    Git简介
    Nexus私服安装
    eclipse中创建MAVEN-web项目
    AsyncTask的使用
    在子线程中更新UI,只能使用Handler
    使用VideoView播放视频
  • 原文地址:https://www.cnblogs.com/For-Miku/p/12205216.html
Copyright © 2011-2022 走看看