专栏文章

题解:P12980 [GCJ 2022 Qualification] 3D Printing

P12980题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miox2rxp
此快照首次捕获于
2025/12/03 02:33
3 个月前
此快照最后确认于
2025/12/03 02:33
3 个月前
查看原文

题目大意:

有三台打印机,每个打印机有四种颜料,需要用 10610^6 的颜料打印一个 DD ,若三台打印机均可打印DD 的颜色不存在,输出IMPOSSIBLE,否则输出四种颜料的数量。

思路:

要打印出同一种颜色,肯定是每一种颜色都足够,所以我们先求出四种颜色数量的最小值,它们的总和再去和 10610^6 进行比较,若不够则输出IMPOSSIBLE,否则去删减,直到四种颜色数量加起来等于 10610^6

代码:

CPP
#include<bits/stdc++.h>
#define MAXX INT_MAX-1
using namespace std;
int c,m,y,k;
int main(){
	int T;
	scanf("%d",&T);
	for(int i=1;i<=T;i++){
		int mc=MAXX,mm=MAXX,my=MAXX,mk=MAXX; // 注意要赋最大值。 
		for(int j=1;j<=3;j++){ // 求最小值。 
			scanf("%d%d%d%d",&c,&m,&y,&k);
			mc=min(mc,c);
			mm=min(mm,m);
			my=min(my,y);
			mk=min(mk,k);
		}
		if(mc+mm+my+mk>=1000000){
			int p=mc+mm+my+mk-1000000; // 删减。 
			if(p>=mc){
				p-=mc;
				mc=0;
				if(p>=mm){
					p-=mm;
					mm=0;
					if(p>=my){
						p-=my;
						my=0;
						if(p>=mk){
							p-=mk;
							mk=0;
						} else{
							mk-=p;
						}
					} else{
						my-=p;
					}
				} else{
					mm-=p;
				}
			} else{
				mc-=p;
			}
			printf("Case #%d: %d %d %d %d\n",i,mc,mm,my,mk);
		} else{
			printf("Case #%d: IMPOSSIBLE\n",i);
		}
	}
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...