📋 个人简介

🎉大家好,我是CSDN2022年3月份新人榜排名第三的 ༺Blog༒Hacker༻ 💬支持我:点赞👍+收藏⭐️+留言📝 🌺格言:༺永做优质༒programmer༻

在这里插入图片描述

注(具体请见CF665B Shopping):

🔥我的***更新时间***会有所改变,每月2-4篇,感谢各位长期以来的支持!

📣Ecological Bin Packing

🔥题目描述 在这里插入图片描述 🔥输入格式 在这里插入图片描述 🔥输出格式 在这里插入图片描述 🔥题意翻译 装箱问题,或者将某些重量的物品放入不同的箱子的问题。这是一个历史上有趣的问题。一些装箱问题是NP完全的,但是适合动态规划解决方案或近似最优的启发式解决方案。

在这个问题上,你将解决处理回收玻璃的垃圾箱包装问题。回收玻璃要求玻璃根据颜色分为三类:棕色,绿色和透明的。在这个问题上,你会得到三个回收箱,每个包含指定数量的棕色,绿色和透明瓶子。为了回收,瓶子将需要被移动,使得每个垃圾桶只包含一种颜色的瓶子。

问题是要减少移动瓶子的数量。你可以假设唯一的问题是尽量减少箱子之间的移动次数。就这个问题而言,每个垃圾箱的容量都是无限的,唯一的限制就是移动瓶子,使每个垃圾桶都包含单一颜色的瓶子。瓶的总数永远不会超过2^31 🔥输入输出样例

输入 #1
1 2 3 4 5 6 7 8 9
5 10 5 20 10 5 10 20 10
输出 #1
BCG 30
CBG 50

💯AC code

#include<bits/stdc++.h>
using namespace std;
char str[6][5]={"BCG","BGC","CBG","CGB","GBC","GCB"};
long n[3][3],js[6];
int main()
{
	long int i,min,p;
	while(scanf("%ld%ld%ld%ld%ld%ld%ld%ld%ld",&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])!=EOF)
	{
		js[0]=n[1][0]+n[2][0]+n[0][2]+n[2][2]+n[0][1]+n[1][1];
        js[1]=n[1][0]+n[2][0]+n[0][1]+n[2][1]+n[0][2]+n[1][2];
        js[2]=n[1][2]+n[2][2]+n[0][0]+n[2][0]+n[0][1]+n[1][1];
        js[3]=n[1][2]+n[2][2]+n[0][1]+n[2][1]+n[0][0]+n[1][0];
        js[4]=n[1][1]+n[2][1]+n[0][0]+n[2][0]+n[0][2]+n[1][2];
        js[5]=n[1][1]+n[2][1]+n[0][2]+n[2][2]+n[0][0]+n[1][0];
		min=js[0];
		p=0;
		for(i=1;i<6;i++)
			if(js[i]<min)
			{
				min=js[i];
				p=i;
			}
		printf("%s %ld\n",str[p],js[p]);
	}
	return 0;
}

🔮朋友们,点赞收藏是我更新的动力,下期再见,拜拜!!!