HDU 5463
题意:一个盒子有36个格子、每个格子可以装64个物品,搬运一个箱子是一次搬运,问最少到搬运次数
思路:直接求总需要多少个格子,然后去求盒子,这里求盒子呢有个小技巧,就是用ceil函数
1 #include<iostream> 2 #include<cmath> 3 #include<cstring> 4 using namespace std; 5 int num[10000]; 6 int main() 7 { 8 int t;cin >> t; 9 while(t--) 10 { 11 int n;cin >> n; 12 memset(num,0,sizeof(num)); //每次需要清零 、 13 int mmax; 14 mmax=0; 15 for(int i=0;i<n;++i){ 16 int a,b;cin >> a >> b; 17 num[a]+=b; //统计每一个种类的总数、 18 if(a>mmax) mmax=a; //记录最大的种类数字 、 19 } 20 int tot=0; 21 for(int i=0;i<=mmax;++i){ 22 if(num[i]!=0) 23 tot+=ceil(1.0*num[i]/64); 24 } 25 cout << ceil(1.0*tot/36) << endl; 26 } 27 }
ceil函数包含在头文件“cmath”,ceil(),括号里面要是实数,求是的大于等于这个实数的最大整数,很多想这类种类问题都可以用ceil函数来求解