uvalive3971
来源:互联网 发布:软件防火墙排名 编辑:程序博客网 时间:2024/06/06 07:37
#pragma warning(disable:4786)#include <stdio.h>#include <iostream>#include <string>#include <vector>#include <map>#define zzzusing namespace std;int min(int a, int b){return a<b?a:b;}int max(int a, int b){return a>b?a:b;}const int MAXN = 1000 + 5;int cnt;map<string, int>id;int ID(string s){if(!id.count(s)) id[s]=cnt++;return id[s];}struct ZZ{int p, q;};vector<ZZ>zz[MAXN];int b, n;bool erfen(int q){int sum = 0;for(int i=0; i<cnt; i++){int bargin = b + 1;int m = zz[i].size();for(int j=0; j<m; j++){if(zz[i][j].q>=q) bargin = min(bargin, zz[i][j].p);}if(bargin == b+1) return false;sum += bargin;if(sum>b) return false;}return true;}int main(){#ifndef zzzfreopen("in.txt", "r", stdin);#endifint cas;scanf("%d", &cas);while(cas--){scanf("%d%d", &n, &b);cnt = 0;int i;for(i=0; i<n; i++) zz[i].clear();id.clear();int maxq = 0;for(i=0; i<n; i++){char type[30], name[30];int p, q;scanf("%s%s%d%d", type, name, &p, &q);maxq = max(maxq, q);ZZ tmp;tmp.p = p;tmp.q = q;zz[ID(type)].push_back(tmp);}int l = 0;int r = maxq;while(l<r){int m = (l+r+1)/2;if(erfen(m)) l = m;else r = m - 1;}printf("%d\n", l);}return 0;}
题意:你有b元钱,想要组装一台电脑,给出n个配件各自的种类、品质银子和价格,要求每种类型的配件各买一个,总价格不超过b,且“品质最差配件”的品质因子应该尽量大
做法:如果每种配件都买最差的,当然有解,所以二分所有配件的品质就可以
代码:
- uvalive3971
- uvalive3971(二分+贪心)
- unity3d反编译须知
- 生日蛋糕
- 很多人遇到过3194错误的解决方法,100%有效!
- 深入学习jquery mobile 页面模版(1)
- 夜暗心伤! 再见,妹子!
- uvalive3971
- 常用数据类型转换(转)
- 2013新春奉送:Android摄像头开发完美demo---(循环聚焦,缩放大小,旋转picture,查询支持的picturesize, ImageButton按键效果)
- time_t tm systemtime 互相转换(转)
- 使用异或加密数据
- linux 笔记
- 解决win2008安装ultraVNC无法发送ctrl+alt+del的组策略调整
- JAVA Scanner 类
- Java环境变量配置