[2016-03-19][UVALive][3971][Assemble]

Posted 红洋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[2016-03-19][UVALive][3971][Assemble]相关的知识,希望对你有一定的参考价值。

  • 时间:2016-03-19 13:55:17 星期六

  • 题目编号:[2016-03-19][UVALive][3971][Assemble]

  • 题目大意:给定若干个电脑零件的价格和质量,求在总价不超过b的情况下,品质最差的配件的质量尽可能大

  • 分析:二分

  1. #include <vector>
  2. #include <map>
  3. #include <algorithm>
  4. #include <string>
  5. #include <cstring>
  6. #include <cstdio>
  7. using namespace std;
  8. typedef long long LL;
  9. #define CLR(x,y) memset((x),(y),sizeof((x)))
  10. #define CLR2(x,y,mtype,mcnt) memset((x),(y),sizeof((mtype))*(mcnt))
  11. #define FOR(x,y,z) for(int (x)=(y);(x)<(z);++(x))
  12. #define FORD(x,y,z) for(int (x)=(y);(x)>=(z);--(x))
  13. const int maxn = 1000 + 100;
  14. struct Com{
  15. int price,quality;
  16. Com(int p = 0,int q = 0):price(p),quality(q){}
  17. };
  18. vector<Com> comp[maxn];
  19. map<string,int> id;
  20. int t,n,b,p,q,maxq,cnt;
  21. int ID(string str){
  22. if(id.count(str)) return id[str];
  23. else id[str] = cnt;
  24. return cnt++;
  25. }
  26. int ok(int q){
  27. int sum = 0;
  28. FOR(i,0,cnt){
  29. int chepest = b + 1;
  30. int m = comp[i].size();
  31. FOR(j,0,m){
  32. if(comp[i][j].quality >= q && comp[i][j].price < chepest)
  33. chepest = comp[i][j].price;
  34. }
  35. sum += chepest;
  36. if(sum > b) return 0;
  37. }
  38. return 1;
  39. }
  40. int main(){
  41. char type[30];
  42. scanf("%d",&t);
  43. while(t--){
  44. scanf("%d%d",&n,&b);
  45. cnt = 0;
  46. FOR(i,0,n) comp[i].clear();
  47. id.clear();
  48. maxq = 0;
  49. FOR(i,0,n){
  50. scanf("%s %*s %d %d",type,&p,&q);
  51. if(q > maxq) maxq = q;
  52. comp[ID(type)].push_back( Com(p,q) );
  53. }
  54. int l = 0,r = maxq,mid;
  55. while(l < r){
  56. mid = l + (r - l + 1)/2;
  57. if(ok(mid)) l = mid;
  58. else r = mid - 1;
  59. }
  60. printf("%d\n",l);
  61. }
  62. return 0;
  63. }




以上是关于[2016-03-19][UVALive][3971][Assemble]的主要内容,如果未能解决你的问题,请参考以下文章

[2016-03-19][UVALive][3902][Network]

[2016-03-19][UVALive][3027][Corporative Network]

[2016-03-19][UVA][11462][Age Sort]

[2016-03-19][UVA][11549][Calculator Conundrum]

[2016-03-19][UVA][11520][Fill the Square]

[2016-03-19][UVA][11078][Open Credit System]