uva 12124
来源:互联网 发布:怎么与isp网络签署协议 编辑:程序博客网 时间:2024/05/29 05:03
找出最大的质量。利用二分查找,找每一个配件高于中间质量的价格最低的型号。
#include<cstdio>#include<vector>#include<map>#include<iostream>using namespace std;const int maxn = 1000 + 5;struct components{ int price; int quality;};int cnt, n, tot;map<string, int> ID;int get_id(string s){ if(!ID.count(s)) ID[s] = cnt++; return ID[s];}vector<components> things[maxn];bool ok(int p){ int sum = 0; for(int i = 0; i < cnt; i++) { int cheapest = tot + 1; for(int j = 0; j < things[i].size(); j++) { if(things[i][j].quality >= p) cheapest = min(cheapest, things[i][j].price); } if(cheapest == tot + 1) return false; sum = sum + cheapest; if(sum > tot) return false; } return true;}int main(){ int T; scanf("%d", &T); while(T--) { cnt = 0; scanf("%d%d", &n, &tot); for(int i = 0; i < n; i++) things[i].clear(); ID.clear(); int mq; for(int i = 0; i < n; i++) { string type, name; int price, quality; cin>>type>>name>>price>>quality; mq = max(mq, quality); int id = get_id(type); things[id].push_back((components){price, quality}); } int L = 0, R = mq; //printf("%d\n", cnt); while(L < R) { //printf("%d %d\n", L, R); int mid = L + (R - L + 1) / 2; if(ok(mid)) L = mid; else R = mid - 1; } printf("%d\n", L); } return 0;}
阅读全文
0 0
- UVA 12124
- uva 12124
- uva 12124 组装电脑
- Uva 12124 Assemble
- UVA - 12124 Assemble
- UVa:12124 Assemble
- uva 1422 12124
- UVA之12124 - Assemble
- UVa 12124 - Assemble
- uva 12124 - Assemble
- uva 12124(最小值最大)
- UVA 12124 Assemble(二分)
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- 常用的sql语句
- 谈函数isset()和empty()的区别
- C语言实现堆排序算法
- flask-login完整单文件示例,带dbmodel
- 无法获得锁 /var/lib/dpkg/lock
- uva 12124
- Docker 容器创建镜像并提交到Docker hub
- Java设计模式详解之单例模式
- css hack
- 欢迎使用CSDN-markdown编辑器
- Spring5源码解析-@Autowired
- ACE实现SSDP设备发现
- SLF4J源码解析-LoggerFactory(一)
- 如何将服务器中的图片显示出来并实现删除。