posts - 0,  comments - 0,  trackbacks - 0
/*
  Name: avcpp
  Copyright: stl
  Author: 
  Date: 10/02/11 20:32
  Description: stl+二分 
*/



#include 
<stdio.h>
#include 
<iostream>
#include 
<string>
#include 
<algorithm>
#include 
<vector>
#include 
<map>
using namespace std;
class node
{
      
public:
             
string name;
             
int price;
             
int quality;
             node(
string _name,int _price,int _quality):name(_name),price(_price),quality(_quality){}
}
;
int n,m;
map
<string,vector<node> > data;
vector
<int> q;
bool check(int lowest_quality)
{
     
long long int cost=0;
     
for(map<string,vector<node> >::iterator i=data.begin();i!=data.end();++i)
     
{
          
int buf=0xfffffff;
          
for(vector<node>::iterator j=(i->second).begin();j!=(i->second).end();++j)
          
{
               
if(j->quality>=lowest_quality&&j->price<buf)
               
{
                   buf
=j->price;
               }

          }

          cost
+=buf;
     }

     
return cost<=(long long) m;
}

int main()
{
    
int cas;
    
while(scanf("%d",&cas)!=EOF)
    
{
         
for(int xx=1;xx<=cas;xx++)
         
{
              data.clear();
              q.clear();
              scanf(
"%d %d",&n,&m);
              
char name[128],buf[128];
              
int quality,price;
              
for(int i=0;i<n;i++)
              
{
                   scanf(
"%s %s %d %d",name,buf,&price,&quality);
                   q.push_back(quality);
                   data[
string(name)].push_back(node(string(name),price,quality));
              }

              sort(q.begin(),q.end());
              vector
<int>::iterator end=unique(q.begin(),q.end());
              
while(q.end()!=end) q.pop_back();
              
int l,r;
              l
=0;
              r
=q.size()-1;
              
while(l<=r)
              
{
                  
int mid=(l+r)>>1;
                  
if(check(q[mid]))
                  
{
                       l
=mid+1;
                  }

                  
else
                  
{
                       r
=mid-1;
                  }

              }

              printf(
"%d\n",q[l-1]);
         }

    }
    
    
return 0;
}

    
                                              
posted on 2011-02-10 22:35 avcpp 阅读(80) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理


<2026年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿

文章档案

搜索

  •  

最新评论