poj 2709 - Painter

Oracle EBS R12.2 安装 -- Step by Step 阅读详情

Description

The local toy store sells small fingerpainting kits with between three and twelve 50ml bottles of paint, each a different color. The paints are bright and fun to work with, and have the useful property that if you mix X ml each of any three different colors, you get X ml of gray. (The paints are thick and "airy", almost like cake frosting, and when you mix them together the volume doesn't increase, the paint just gets more dense.) None of the individual colors are gray; the only way to get gray is by mixing exactly three distinct colors, but it doesn't matter which three. Your friend Emily is an elementary school teacher and every Friday she does a fingerpainting project with her class. Given the number of different colors needed, the amount of each color, and the amount of gray, your job is to calculate the number of kits needed for her class.

Input

The input consists of one or more test cases, followed by a line containing only zero that signals the end of the input. Each test case consists of a single line of five or more integers, which are separated by a space. The first integer N is the number of different colors (3 <= N <= 12). Following that are N different nonnegative integers, each at most 1,000, that specify the amount of each color needed. Last is a nonnegative integer G <= 1,000 that specifies the amount of gray needed. All quantities are in ml.

Output

For each test case, output the smallest number of fingerpainting kits sufficient to provide the required amounts of all the colors and gray. Note that all grays are considered equal, so in order to find the minimum number of kits for a test case you may need to make grays using different combinations of three distinct colors.

Sample Input

3 40 95 21 0
7 25 60 400 250 0 60 0 500
4 90 95 75 95 10
4 90 95 75 95 11
5 0 0 0 0 0 333
0

Sample Output

2
8
2
3
4

           

题目难度不大,需要注意的是不要直接减50这样可能得不到最优解(这代码是我自己私下写的)

/*---------------------------------------------------------------------------------
	* FileName:Painter.c
	* author:doodlesomething@163.com
	* date:10-29-2014
	* version:1.0
	* description:Painter POJ-2709 solved by Greedy Algorithm
	* more:使用贪心算法解决即可,这里是选择最大的优先处理
-----------------------------------------------------------------------------------*/


#include <stdio.h>


#define N 20




void QuickSort(int arr[],int low,int high) {
	int first,last,key;
	
	if(low > high) {
		return;
	}

	first = low;
	last = high;
	key = arr[first];

	while(first < last) {
		//从后往前找第一个比key大的
		while(first < last && arr[last] <= key)
			last--;
		//移到低端
		arr[first] = arr[last];
		
		//从前往后找第一个比key小的
		while(first < last && arr[first] >= key)
			first++;
		//移到高端
		arr[last] = arr[first];
	}

	//记录枢纽位置
	arr[first] = key;

	QuickSort(arr,low,first - 1);
	QuickSort(arr,first + 1,high);

}





int main() {
	
	int n,i,max,total,grey;
	int colors[N];

	max = 0;
	total = 0;
	
	//i输入
	printf("please enter n:");
	scanf("%d",&n);
	printf("please enter amount of different colors:");
	for(i = 0; i < n; i++) {
		scanf("%d,",&colors[i]);
		if(max < colors[i])
			max = colors[i];

	}

	printf("please enter the ammout of grey:");
	scanf("%d",&grey);
	

	//先算出除了灰色以外所需要的数目
	if(max % 50) {
		total = max / 50 + 1;
	}
	else {
		total = max / 50;
	}

	//算出剩余用来配置灰色的量
	for(i = 0; i < n ; i++) {
		colors[i] = total * 50 - colors[i];
	}
	
	//配置灰色
	while(grey > 0) { 
		//进行降序排序
		QuickSort(colors,0,n - 1);

		/*
		理解这里是关键,由于colors数组的降序的,选取三种颜色来配色
		则在这三种颜色中最先没有的肯定是第三种,注意这里是刚排完序
		则第三种之后的颜色必定没有第三中多,则需要另外新开一个,并
		更新各种颜色的剩余量
		*/
		if(colors[2] <= 0) {
			total++;
			for(i = 0; i < n; i++) {
				colors[i] += 50;
			}
		}

		//一毫升配置,相应减一
		colors[0]--;
		colors[1]--;
		colors[2]--;
		grey--;
	}
	
	printf("total:%d\n",total);

	return 0;
}




思科模拟器CIsco Packet Tracer利用三层交换机实现VLAN间路由 版权声明:如果对大家有帮助,大家可以自行转载的。 1.技术原理: 三层交换机具备网络层的功能,实现 VLAN 相互访问的原理是:利用三层交换机的路由功能,通过识别数据包的 IP 地址,查找路由表进行选路转发,三层交换机利用直连路由可以实现不同 VLAN 之间的相互访问。三层交换机给接口配置 IP 地址。采用 SVI(交换虚拟接口)的方式实现 VLAN 间互连。SVI 是指为交换机中的VLAN 创建... 阅读详情

相关推荐

poj2709 Painter

链接:http://poj.org/problem?id=2709 这个题总体来说还是很简单的,不过有一个地方要注意。 题意:有种颜料套装(颜色种类3到12),其中每种颜料有50ml,然后任何Xml的三种颜料可以混合成灰色颜料。现在,一老师,需要N种颜料,每种颜料的需求量告知,并需要一些灰色颜料。问,最少需要几套颜料即可满足颜料所需。、 本题的关键是:选出剩下颜料中的最大(贪心思想)数量的三

u012914220的专栏 611

【原创工具 | OpenCV-CamCalib】一个基于 OpenCV 的自动化相机数据采集和标定程序

一个基于OpenCV的自动化相机数据采集和标定程序。系统内置相机地址默认为 0。

XavierJ的博客 2697

【poj2709】Painter--贪心

Painter Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5621 Accepted: 3228 Description The local toy store sells small fingerpainting kits with between...

dimeitong1731的博客 265

基于文件通信的QMT量化交易信号桥接方案设计与实现

在量化交易系统开发中,进程间通信(IPC)是连接不同计算模块、实现策略逻辑与交易执行解耦的关键技术。其核心原理在于允许运行于独立环境或进程的程序安全、可靠地交换数据。文件系统通信作为一种经典的IPC方法,因其实现简单、跨平台兼容性好且数据可持久化,在非高频场景下具有重要技术价值。它尤其适用于需要将外部复杂计算环境(如配备丰富数据科学库的Python环境)与专用交易终端(如迅投QMT)集成的应用场景。通过约定文件路径与数据格式,外部程序可将包含交易指令的JSON信号文件写入特定目录,而交易终端通过轮询或监听机

weixin_28678151的博客 417

第3章 信息技术服务(一)

对 第三章 《信息技术服务》中第一、二、三节 <内涵与外延、原理与组成、服务生命周期>进行总结、归纳

好好学习,天天向上的博客 733

poj 2709 Painter (贪心)

//需要n中普通原料和g ml灰色原料 //每三种不同普通原来各x ml 可以合成 x ml 灰色原料 //问最少需要集组原料 每组各原料50 ml # include # include # include using namespace std; int main() { int i,n,cot,g,a[15],g1,b[15]; while(~scanf("%d",&n),n)

苍竹林 875

STM32 HAL库驱动BMP388:从寄存器配置到高精度气压温度采集

本文详细介绍了如何使用STM32 HAL库驱动BMP388气压温度传感器,实现高精度数据采集。内容涵盖从硬件连接到STM32CubeMX配置、关键寄存器解析、驱动源码编写,到核心补偿算法与海拔换算的完整流程,并提供了针对不同应用场景的优化配置与调试技巧,帮助开发者快速构建稳定可靠的测量方案。

weixin_29299807的博客 171

POJ 2709 Painter 贪心

POJ 2709 Painter  题意: 输入n,表示需要几种颜色,接下来输入n个数字,表示每种颜色需要的毫升数,最后输入一个数字,代表灰色需要的毫升数。1ml灰色颜料可以由3种不同的颜料各1ml混合而成。 一套颜料包含了所有颜色(除了灰色) 各50ml, 现在要求出,所需要最少的颜料包,来满足输入的需求。 解法:用贪心,先把其他颜料弄到满足需求,拿出剩余的的颜料来合成灰色,从颜

Remilia's 1145

全志DRM框架下LVDS双屏异显配置实战

本文详细介绍了在全志DRM框架下配置LVDS双屏异显的实战经验。涵盖硬件连接、内核配置、设备树修改、背光控制及U-Boot适配等关键步骤,重点解析屏参转换技巧与双屏route配置,帮助开发者解决工业控制台等多屏应用中的显示适配问题,提升开发效率。

rnn9storyteller的博客 813

S7-200 Smart 控制运动轴(脉冲电机/伺服)教程

S7-200 Smart 控制运动轴(脉冲电机/伺服) 结合本人刚接触触摸屏时候的踩坑经验,编写S7-200 Smart 控制运动轴(脉冲电机/伺服)的详细流程,给刚接触PLC的朋友提供一些经验指导。 本文详细介绍了S7-200 Smart 控制脉冲步进/伺服电机流程,包含接线方法及梯形图。希望对初学者有所帮助

xjbsw0的博客 5万+

POJ2709 - Painter (贪心)

题目链接 : poj2709:Painter思路 代码 思路由于需要尽可能少的购买套餐,所以就要避免浪费。每种颜色的数量是不同的,为了避免某一种颜色剩余的过多,也就是有一些颜色会过早被用光,所以在每次取颜料来配置灰色时(利用 贪心 的思想),都要在剩余量最多的几种颜料中来取。 要每次都达到最优(也就是在剩余量最多中来取),所以每次的取量,不能过大。过大会导致不能达到最优,每次的进量只能为1。 具

dcf_xyz的专栏 640

【100%通过率】华为OD机试真题 Java&Go 实现【查找单入口空闲区域】【2022.11 Q4 新题】

给定一个 m xn 的矩阵,由若干字符 和0构成,X表示该处已被占据,0"表示该处空闲,请找到最大的单入口空闲区域.解释:空闲区域是由连通的O组成的区域,位于边界的0可以构成入口,单入口空闲区域即有目只有一个位于边界的0作为入口的由连通的'O"组成的区域。 如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。

MISAYAONE的博客 2万+

poj2709Painter

这是一道贪心的题,具体思想是,先对除灰色以外的其他颜色进行排序,然后找到需求量最大的颜色,除以50进行最小的颜色的套数min_bottle的计算,然后在对灰色进行操作,注意灰色必须一次-1,减完之后,对此时排序的队列最少的前三种进行+1操作;如果+1之后大于min_bottle*50,则min_bottles+1;然后再排序(其实可以只重新找前三个颜色的位置即可,不过n最多12,全排下,也无所谓)

h123120的专栏 780

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

POJ—2709—Painter—【贪心】

Painter Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3157   Accepted: 1962 Description The local toy store sells small fingerpainting kits with between

ACer-TomatoFish 1134

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

POJ 2709 Painter ——JAVA实现

JAVA实现POJ2709——稻草人 原题:http://poj.org/problem?id=2709   题意: 给出几种颜色需求的ml量,然后最后一个数是灰色需求量,灰色可以由任何三中不同颜色的颜色组成,每个颜料盒有所给出的颜色50ml。 问最少给出几个颜料盒,可以组成所需求颜色 用贪心来解决,先求出满足的普通色所需的最小盒数,然后把剩余颜料从大到小排列,那前三种每个取出1ml组...

稻草人程序员 285

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

poj 2709 Painter

题目翻译: 杂货店出售一种由 N(3<=N<=12)种不同颜色的颜料,每种一瓶(50ML), 组成的颜料套装。你现在需要使用这 N 种颜料;不但如此,你还需要一定 数量的灰色颜料。杂货店从来不出售灰色颜料——也就是它不属于这 N 种 之一。幸运的是,灰色颜料是比较好配置的,如果你取出三种不同颜色的 颜料各 x ml,混合起来就可以得到 xml 的灰色颜料(注意不是 3x

Loi_whales 的坑 333

POJ 2709 painter

老老实实的刷模拟吧,虽然模拟有点浪费生命……神一样的

LEGION的专栏 833

POJ 2709 Painter

贪心搜索,注意贪心策略要使利用率达到最高

scorpiocj的专栏 1231

POJ2709 Painter 贪心算法

一套涂料有3~12种颜色,每种颜色50ml。Emily上课需要n种颜色的涂料,第i种颜色需要color[i]ml,此外,Emily还需要grayml的灰色涂料,每ml灰色的涂料需要3种不同颜色的其他涂料各1ml融合而成。emily上课,至少需要买几套涂料。

m0_71272694的博客 139

POJ_2709_Painter

Painter Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3725   Accepted: 2252 Description The local toy store sells small fingerpainting kits with between

OTTFF的博客 974

POJ 2709 Painter

Description杂货店出售一种由N(3<=N<=12)种不同颜色的颜料,每种一瓶(50ML),组成的颜料套装。你现在需要使用这N种颜料;不但如此,你还需要一定数量的灰色颜料。杂货店从来不出售灰色颜料——也就是它不属于这N种之一。幸运的是,灰色颜料是比较好配置的,如果你取出三种不同颜色的颜料各x ml,混合起来就可以得到x ml的灰色颜料(注意不是3x)。现在,你知道每种颜料各需要多少ml。你决

华章 632

【POJ 2709】Painter

题目描述 杂货店出售一种由 N(3<=N<=12)种不同颜色的颜料,每种一瓶(50ML), 组成的颜料套装。你现在需要使用这 N 种颜料;不但如此,你还需要一定 数量的灰色颜料。杂货店从来不出售灰色颜料——也就是它不属于这 N 种 之一。幸运的是,灰色颜料是比较好配置的,如果你取出三种不同颜色的 颜料各 x ml,混合起来就可以得到 xml 的灰色颜料(注意不是 3x)。 现在,你知道

LOI_Sherlock 429
上一篇: poj 1017 - packets
下一篇: poj 1328 - Radar Installation
doodlesomething
博客等级 码龄13年 53粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值