zoukankan      html  css  js  c++  java
  • poj 2709

    http://poj.org/problem?id=2709

    题意:就是那个老师需要n瓶颜色的墨水,和1瓶颜色的灰色的墨水,但是灰色的墨水没得卖,只能由三种颜色相同的墨水混合而成,但是3瓶50ML的墨水也只能混合出1瓶50ML的墨水,这些墨水最多是有12瓶的,最少是3瓶,但不是这些墨水都是需要购买的,只需要购买这些老师所需要的颜色的墨水,每一瓶的墨水有50ML,老师所买的N瓶颜色不同的墨水为一套,问老师最少需要购买多少套的墨水。

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <stdlib.h>
     4 
     5 int cmp(const void *a,const void *b)         
     6 {
     7     return (*(int *)a)-(*(int *)b);
     8 }
     9 
    10 
    11 int main()
    12 {
    13     int color[15],nous[15],gray,i,ans,n,mark,max1;     //color 用来存每种颜色需要的量,nous也就是no user 每一套剩余使用的墨水的量
    14     while(scanf("%d",&n),n!=0)
    15     {
    16         memset(color,0,sizeof(color));
    17         for(i=0,ans=0;i<n;i++)
    18             scanf("%d",&color[i]);
    19         scanf("%d",&gray);
    20         for(i=0,max1=0,mark=n;i<n;i++)
    21         {
    22             if(color[i]>max1) max1=color[i];        //找出需要最多量的拿一瓶墨水,并记录下来它的量,因为他的量就有可能是最少需要的墨水的套数
    23 
    24         }
    25         if(max1%50==0) ans=max1/50;            //如果最大的量可以整除50,那么刚好最多的就是它除以50的套数,否则有多余的都需要在多买一套
    26         else ans=max1/50+1;
    27  

    28 /* for(i=0;i<mark;i++) 29 if(color[i]==0) n--;*/ //这个没什么意义,因为之前理解错了题意 31 for(i=0;i<mark;i++) //有ans套的墨水,有多少是剩下来没用的,之后就可以用这些来混合出灰色的 32 nous[i]=ans*50-color[i]; 33 for(;;) 34 { 35 qsort(nous,mark,sizeof(nous[0]),cmp); //对这些剩余墨水的量由小到大进行排序,并且每一次都是混合出1ml的墨水,为什么要这些,一组数据你就会懂,就是3 3 3 3 有可能是3 0 0 0或者
    // 0 0 0 0 下面这种就是每次减1ml进行然后在重新进行排序,上面的就是直接减倒数第3个墨水瓶的数
    36 if(nous[mark-3]==0&&gray>0){ 37 for(i=0;i<mark;i++) 38 nous[i]=nous[i]+50; 39 ans++; 40 } 41 nous[mark-1]--; 42 nous[mark-2]--; 43 gray--; 44 nous[mark-3]--; 45 if(gray<=0) break; 46 } 47 printf("%d ",ans); 48 } 49 return 0; 50 }
  • 相关阅读:
    师生关系
    2019-2020 20191316《信息安全专业导论》第二周学习总结
    计算机科学概论问题2
    android studio device file explorer 无法向/storage/emulated/0/上传文件
    【转载】android打包APK
    android app no modules 错误,不能运行
    Error:Unable to locate adb within SDK in Android Studio
    Ubuntu set up 8
    Ubuntu 18.04.3 安装 CUDA 10.2
    Intel Realsense SDK for Android 编译
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/5360619.html
Copyright © 2011-2022 走看看