LA 3971 Assemble 组装电脑
来源:互联网 发布:域名备案ps 编辑:程序博客网 时间:2024/04/29 12:28
题意:给定电脑的n个配件,每个配件有类型,名字(没用的信息),价格和品质因子。要求每种类型的配件各买一个用于组装电脑,总价格不超过b元。求所有可能的方案中品质因子最差的那个配件的品质因子最大能是多少。
非常的暴力。直接枚举每个配件的品质因子作为品质因子最差的配件,判断该配件的品质因子能否满足要求。能满足则更新最大值。判断方法很简单,对于每种类型的配件选择品质因子不低于当前要判断的数且最便宜的购买。若不超过b元则符合要求否则不符合要求。O(n^2)复杂度。n最大才1000。因此暴力水之。
#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <stack>#include <queue>#include <vector>#include <map>#include <set>using namespace std;const int MAX = 1005;const int INF = 1000000001;struct Components //组件结构体{ int price; //价格 int quality; //品质因子};int n, b;char type[30], name[30];Components temp;int cnt;map <string, int> id; //对组件种类编号vector <Components> com[MAX]; //组件bool judge(int x){ int i, j, sum = 0; for(i = 1; i <= cnt; i++) { int cheapest = INF; for(j = 0; j < com[i].size(); j++) { if(com[i][j].quality >= x) cheapest = min(cheapest, com[i][j].price); } if(cheapest == INF) return false; sum += cheapest; } return sum <= b;}void input(){ scanf("%d%d", &n, &b); id.clear(); for(int i = 0; i < MAX; i++) com[i].clear(); cnt = 0; for(int i = 0; i < n; i++) { scanf("%s%s%d%d", type, name, &temp.price, &temp.quality); if(id[type] == 0) id[type] = ++cnt; com[id[type]].push_back(temp); }}void solve(){ int ans = 0; for(int i = 1; i <= cnt; i++) { for(int j = 0; j < com[i].size(); j++) { if(judge(com[i][j].quality)) ans = max(ans, com[i][j].quality); } } printf("%d\n", ans);}int main(){ int T; scanf("%d", &T); while(T--) { input(); solve(); } return 0;}
0 0
- LA 3971 Assemble 组装电脑
- LA 3971 Assemble(组装电脑 最小值最大 二分答案)
- 组装电脑(Assemble,NWERC 2007,LA 3971)
- LA 3971 组装电脑
- LA 3971 组装电脑
- 组装电脑 LA 3971 二分答案
- UVA-LA 3971 组装电脑 二分枚举
- LA 3971 Assemble / 二分
- 例题1.12 组装电脑 Assemble UVALive
- 二分+判断,最小值最大(组装电脑,LA 3971)
- 【二分答案】 【POJ3497】 【Northwestern Europe 2007】 Assemble 组装电脑
- UVA LA 3971-(Assemble)二分答案
- UVALive 3971 组装电脑
- UVALive 3971 Assemble 电脑配件 二分+贪心
- 电脑组装
- 组装电脑
- 组装电脑配置---推荐
- 电脑组装参考方案
- NETBEANS——HTML5(PHP) + SCSS(with RUBY) 环境的配置过程
- Decorator Pattern 装饰者模式
- MAC 命令
- 《编程导论(Java)·4.1数据抽象的含义》
- 1 用户及用户组、文件夹管理
- LA 3971 Assemble 组装电脑
- PostGIS中命令的解释
- version (or platform)dependent Code
- 【Leetcode】Course Schedule #207
- java util包概述
- LA 3635 Pie 派
- [LeetCode]Binary Tree Right Side View
- 《Java面试试题》写一个两个线程之间的死锁
- UVa 11520 Fill the Square 填充正方形