UVa 102|Ecological Bin Packing|暴力
来源:互联网 发布:安全知识网络竞赛答题 编辑:程序博客网 时间:2024/06/14 07:49
原文地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=38
题目翻译
回收玻璃的时候需要将玻璃分成3个类别:棕色玻璃,绿色玻璃和无色玻璃。本问题中,给出3个回收箱,每个回收箱都装有一定数量的棕色、绿色和无色玻璃瓶。为了回收这些玻璃瓶,这些瓶子需要被重新分类到3个桶中,使得每个桶只装一种颜色的玻璃瓶。
你需要写个程序,求出移动瓶子满足上述要求的最小移动次数,移动一个瓶子算一次。每个桶的容量均为无穷大,保证程序运算中间结果在32位整数范围内。
输入
输入有多组数据,每组数据一行9个整数。前3个整数分别表示第一个桶里的棕色、绿色和无色的塑料瓶的个数;中间3个整数分别表示第二个桶里的棕色、绿色和无色的塑料瓶的个数;后3个整数分别表示第三个桶里的棕色、绿色和无色的塑料瓶的个数。
比如: 10 15 20 30 12 8 15 8 31
表示第一个桶里有20个透明塑料瓶,第二个桶里有12个绿色塑料瓶,第三个桶里有15个棕色塑料瓶。
一行内的整数由一个或多个空格分隔开,你的程序需要处理输入文件的所有行。
输出
对于每组数据输出一行,表明3个桶分别存放什么颜色的桶,能使得移动瓶子的次数最少,并输出这个次数。
输出由一个由三个大写字符'B', 'G', 'C'
(表示棕色、绿色和无色)字符串(表示三个桶依次存放那种颜色的瓶子)和一个整数(表示这么安排下移动瓶子的次数)。
如果对于最少移动瓶子的次数,有多种安排桶的方法,输出按字符串(上面描述的)字典序最小的那种。
样例输入
1 2 3 4 5 6 7 8 95 10 5 20 10 5 10 20 10
样例输出
BCG 30CBG 50
题解
如果颜色的个数小于等于10的话,我们可以暴力DFS查出所有安排桶的情况,然后找出最优的方案即可。
然后本题固定只有3种颜色,6种情况。。。然后。。。
#include <cstdio>#define rep(i,j,k) for(i=j;i<k;++i)int main() { char type[6][5] = { "BCG", "BGC", "CBG", "CGB", "GBC", "GCB" }; long long n[3][3], tot[6]; while (scanf("%lld%lld%lld%lld%lld%lld%lld%lld%lld", &n[0][0], &n[0][1], &n[0][2], &n[1][0], &n[1][1], &n[1][2], &n[2][0], &n[2][1], &n[2][2]) == 9) { tot[0] = n[1][0] + n[2][0] + n[0][2] + n[2][2] + n[0][1] + n[1][1]; // BCG: 2B,3B->1B 1C,3C->2C 1G,2G->3G tot[1] = n[1][0] + n[2][0] + n[0][1] + n[2][1] + n[0][2] + n[1][2]; // BGC: 2B,3B->1B 1G,3G->3G 1G,2C->3C tot[2] = n[1][2] + n[2][2] + n[0][0] + n[2][0] + n[0][1] + n[1][1]; // CBG: 2C,3C->1C 1B,3B->2B 1G,2G->3G tot[3] = n[1][2] + n[2][2] + n[0][1] + n[2][1] + n[0][0] + n[1][0]; // CGB: 2C,3C->1C 1G,3G->2G 1B,2B->3B tot[4] = n[1][1] + n[2][1] + n[0][0] + n[2][0] + n[0][2] + n[1][2]; // GBC: 2G,3G->1G 1B,3B->2B 1C,2C->3C tot[5] = n[1][1] + n[2][1] + n[0][2] + n[2][2] + n[0][0] + n[1][0]; // GCB: 2G,3G->1G 1C,3C->2C 1B,2B->3B long long i, mi = tot[0], p = 0; rep(i,0,6) if (tot[i] < mi) { mi = tot[i]; p = i; } printf("%s %lld\n", type[p], tot[p]); } return 0;}
- UVA 102 - Ecological Bin Packing(暴力)
- uva 102 - Ecological Bin Packing(暴力)
- UVa 102|Ecological Bin Packing|暴力
- UVa 102 - Ecological Bin Packing
- UVA 102 - Ecological Bin Packing
- UVa 102 Ecological Bin Packing
- UVa - 102 - Ecological Bin Packing
- uva 102 Ecological Bin Packing
- UVA 102 Ecological Bin Packing
- UVa 102- Ecological Bin Packing
- UVa OJ 102-Ecological Bin Packing
- UVa Problem 102 - Ecological Bin Packing
- UVa Problem 102 - Ecological Bin Packing
- UVa 102 Ecological Bin Packing (water ver.)
- UVA之102 - Ecological Bin Packing
- 102 - Ecological Bin Packing
- 102 - Ecological Bin Packing
- UVa系列——102/Ecological Bin Packing
- eclipse validation功能
- 快速排序算法及实现
- 京东爬取评论简单分析
- 如何安装Composer和使用Packagist 镜像
- DAG上的动态规划--硬币问题
- UVa 102|Ecological Bin Packing|暴力
- mvc +ef 框架实现上传excel表格并实现批量增加
- 【C++】第5章 循环和关系表达式 知识总结
- 数据处理过程——Data Processing
- 高级加密标准
- 1712: 数交点 正n边形内交点的个数
- HNU OJ题库 1001A数塔
- JS(7)
- 正则表达式