北大ACM(POJ1017-Packets)

Question:http://poj.org/problem?id=1017
问题点:贪心。
 1 Memory: 224K        Time: 32MS
 2 Language: C++        Result: Accepted
 3 
 4 #include <iostream>
 5 using namespace std;
 6 
 7 int seq[4]={0,5,3,1};//表示分配完3*3产品剩余3*3产品数对应剩余2*2的空位数   
 8 int main()
 9 {
10     int product[6],packets,twos,ones;
11     bool flag;
12     while(true)
13     {
14         int i;
15         flag=false;
16         for(i=0;i<6;i++)
17         {
18             cin>>product[i];
19             if(product[i]>0) flag=true;
20         }
21         if(!flag) break;
22 
23         packets = product[5]+product[4]+product[3]+(product[2]+3)/4;
24         twos = product[3]*5+seq[product[2]%4];
25         if(product[1]>twos)
26         {
27             packets += (product[1]-twos+8)/9;
28         }
29         ones = 36*packets-36*product[5]-25*product[4]-16*product[3]-9*product[2]-4*product[1];
30         if(product[0]>ones)
31         {
32             packets += (product[0]-ones+35)/36;
33         }
34         cout<<packets<<endl;
35     }
36     return 0;
37 }

 

posted @ 2017-03-03 10:28  月生丶  阅读(592)  评论(0)    收藏  举报