UVA 12124

来源:互联网 发布:python range to list 编辑:程序博客网 时间:2024/06/09 19:53

链接
题意:组装电脑 , 每个组件都要一个。 并在价格允许的情况下使得最差质量的质量尽量高。
分析: 贪心+二分写一下就好了 , 这道题是熟悉STL的好题!

#include <bits/stdc++.h>#define sc scanf#define pr printfusing namespace std;struct note{    long long price;    long long quality;    note(long long _price , long long _quality)    {        price   =  _price;        quality =  _quality;    }};const long long INF = 0x3f3f3f3f;map<string , vector<note>> dict;bool is_can(long long quality , long long num){    long long sum = 0;    for(auto iter : dict)    {        long long _qua = INF;        for(auto ptr : iter.second)        {            if(ptr.quality >= quality)            {                if(ptr.price < _qua)                    _qua = ptr.price;            }            //cout<<ptr.price<<" "<<ptr.quality<<endl;        }        if(_qua == INF) return false;        sum += _qua;    }    //cout<<"quality : "<<quality<<" price : "<<sum<<endl;    if(sum > num)        return false;    return true;}int main(){    ios::sync_with_stdio(false);    int t , i , j;    long long n , m;    cin>>t;    while(t--)    {        dict.clear();        string lie , name;        long long price , quality;        cin>>n>>m;        long long maxx = 0 , minn = 0x3f3f3f3f;        for(i=1; i<=n; i++)        {            cin>>lie>>name>>price>>quality;            maxx = maxx > quality ? maxx : quality;            minn = minn > quality ? quality : minn;            auto ptr = dict.find(lie);            if(ptr == dict.end())            {                vector<note> a;                a.push_back(note(price , quality));                dict.insert(pair<string , vector<note>>(lie , a));            }            else                ptr->second.push_back(note(price , quality));        }        long long ans;        while(minn <= maxx)        {            long long mid = (minn + maxx) / 2;            if(is_can(mid , m))                ans = mid , minn = mid + 1;            else                maxx = mid - 1;        }        cout<<ans<<endl;    }    return 0;}
原创粉丝点击