北大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 }