[JSOI2007]奶酪

题目描述

奶酪和pizza一样,是一小块扇形的固体。在奶酪从工厂里生产出来的时候,一共有4种形状,编号为1~4,分别是圆心角为72º;;,144º;;,216º;;,288º;;的扇形。奶酪的盒子是圆形的,半径和奶酪的半径一致。也就是说,一块1号奶酪和一块4号奶酪可以恰好装入一个盒子,一块2号奶酪和一块3号奶酪可以恰好装入一个盒子。
你的任务是写一个程序,计算给定的奶酪最多可以装满几个盒子。

输入格式

一行,四个数字,表示1~4号奶酪的数量,都在0~100之内

输出格式

一个数字,表示可以装满几个盒子

 

 

 

 

 

题解:———————————————————————————————————————————————————

贪心顺序:
72+288
144+216
72+2*144
2*72+216
3*72+144



72+288
144+216
2*72+216
72+2*144
3*72+144


通过数学方法可证明,相加的数的个数是递增的才能保证最优

代码实现:

#include<iostream>
using namespace std;

int main()
{
    int a[6],i,j;
    cin>>a[1]>>a[2]>>a[3]>>a[4];
    a[5]=0; 
   
    j=min(a[4],a[1]);
    a[5]=a[5]+j;
    a[4]=a[4]-j;
    a[1]=a[1]-j;
   
    j=min(a[2],a[3]);
    a[5]=a[5]+j;
    a[2]=a[2]-j;
    a[3]=a[3]-j;
   
    j=min(a[1]/2,a[3]);
    a[5]=a[5]+j;
    a[1]=a[1]-2*j;
    a[3]=a[3]-j;
   
     j=min(a[1],a[2]/2);
    a[5]=a[5]+j;
    a[1]=a[1]-j;
    a[2]=a[2]-2*j;
   
    j=min(a[1]/3,a[2]);
    a[5]=a[5]+j;
    a[1]=a[1]-3*j;
    a[2]=a[2]-j;
      
    a[5]=a[5]+a[1]/5;
    a[1]=a[1]%5;
   
    if(a[1]>0) a[5]+=1;
    cout<<a[5];
    system("pause");
      
    }

posted on 2011-12-11 16:04  怡红公子  阅读(241)  评论(0编辑  收藏  举报