题意:

      要搭配出来n种颜料,每种颜料要用mi升,除了这n种颜色还有一个合成灰色的毫升数,灰色是由三种不同的颜色合成的,三种m m m 的不同颜色能合成m升灰色,然后问你满足要求至少要多少盒颜色,这个1盒的定义是:一盒里面有n种颜色,每种50ml.

思路:

      先把所有的这n中颜色的最小需要合数求出来,然后在处理灰色,处理灰色的时候可以1升1升的合成,每次去当前最大的三个来合成1升,如果最大的三个有0的,那么就再来一盒(也就是一套),千万不要直接把最大的个颜色直接一下用完,要1升一升用,但是有小优化,就是用第三盒和第四和的差,如果相等就用1,这样感觉会快一点,我是这样想的,ac了,但是貌似又不优化都是0ms过吧,题目简单,但是挺好。


#include<stdio.h>
#include<string.h>
#include<algorithm> using namespace std; int cc[15];
int tt[15]; int main ()
{
int i ,j ,n ,hui;
while(~scanf("%d" ,&n) && n)
{
int max = 0;
for(i = 1 ;i <= n ;i ++)
{
scanf("%d" ,&cc[i]);
for(j = 0 ;;j++)
if(j * 50 >= cc[i])
{
if(max < j) max = j;
cc[i] = j * 50 - cc[i];
tt[i] = j;
break;
}
}
for(i = 1 ;i <= n ;i ++)
cc[i] += (max-tt[i]) * 50;
scanf("%d" ,&hui);
while(hui>0)
{
sort(cc + 1 ,cc + n + 1);
if(!cc[n] || !cc[n-1] || !cc[n-2])
{
max ++;
for(j = 1 ;j <= n ;j ++)
cc[j] += 50;
}
int tmp;
if(n == 3) tmp = cc[n-2];
else if(cc[n-2] == cc[n-3]) tmp = 1;
else tmp = cc[n-2] - cc[n-3];
hui -= tmp;
cc[n] -= tmp;
cc[n-1] -= tmp;
cc[n-2] -= tmp;
}
printf("%d\n" ,max);
}
return 0;
}

最新文章

  1. 【mysql】关于悲观锁
  2. 【分享】图解Windows Server 2012 R2 配置IIS 8全过程
  3. iOS $299刀企业证书申请的过程以及细节补充(二)
  4. delphi 10 seattle 安卓服务开发(三)
  5. linux 程序或服务开机自启动
  6. Epplus使用教程1(基本介绍)
  7. HDUOJ 2672---god is a girl 《斐波那契数》
  8. robotframework+ride+Selenium2Library+AutoItLibrary配置
  9. HDU 1393 Weird Clock (英语,纪念题)
  10. ulimit 命令
  11. DaoImpl中实现查询分页-使用HibernateCallback来做更加方便
  12. Spring MVC Controller与jquery ajax请求处理json
  13. UVa 10074 - Take the Land
  14. 【mysql】关于InnoDB表text blob大字段的优化
  15. CodeForces 586D
  16. 该用Python还是SQL?4个案例教你节省时间
  17. Linux shell 及命令汇总
  18. FI 创建资产接口AS01
  19. Linux&#160;学习笔记之超详细基础linux命令&#160;Part&#160;4
  20. C# event关键字

热门文章

  1. 腾讯云容器服务 TKE 拿下新加坡 MTCS 最高级别安全认证
  2. FreeBSD ports 基本用法
  3. 如何报告FreeBSD 的bug?
  4. wget 爬取网站网页
  5. Python的web开发
  6. Pandas文件读取——Pandas.read_sql() 详解
  7. PTA 报数
  8. 对象存储服务-Minio
  9. Android学习之Broadcast初体验
  10. vue 快速入门 系列 —— 侦测数据的变化 - [基本实现]