码迷,mamicode.com
首页 > 其他好文 > 详细

百练个人测试

时间:2015-07-11 06:40:52      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

B题:http://bailian.openjudge.cn/exam/1511/2/

这题wa了一次,后来理解清楚题意之后改对了,

  分析六个型号的产品占用箱子的具体情况如下:6*6 的产品每个会占用一个完整的箱子,并且没有空余空间;5*5 的产品每个占用一个新的箱子,并且留下11 个可以盛放1*1的产品的空余空间;4*4 的产品每个占用一个新的箱子,并且留下5 个可以盛放2*2 的产品的空余空间;3*3 的产品情况比较复杂,首先3*3 的产品不能放在原来盛有5*5 或者4*4 的箱子中,那么必须为3*3 的产品另开新的箱子,新开的箱子数目等于3*3 的产品的数目除以4 向上取整;同时我们需要讨论为3*3 的产品新开箱子时,剩余的空间可以盛放多少2*2 和1*1 的产品(这里如果有空间可以盛放2*2 的产品,我们就将它计入2*2 的空余空间,等到2*2 的产品全部装完,如果还有2*2 的空间剩余,再将它们转换成1*1 的剩余空间)。我们可以分情况讨论为3*3 的产品打开的新箱子中剩余的空位,共为四种情况:第一种,3*3 的产品的数目正好是4 的倍数,所以没有空余空间;第二种,3*3 的产品数目是4 的倍数加1,这时还剩5 个2*2 的空位和7 个1*1 的空位;第三种,3*3 的产品数目是4 的倍数加2,这时还剩3 个2*2 的空位和6 个1*1 的空位;第四种,3*3 的产品数目是4 的倍数加3,这时还剩1 个2*2 的空位和5 个1*1 的空位;处理完3*3 的产品,就可以比较一下剩余的2*2的空位和2*2 产品的数目,如果产品数目多,就将2*2 的空位全部填满,再为2*2 的产品打开新箱子,同时计算新箱子中1*1 的空位,如果剩余空位多,就将2*2 的产品全部填入2*2的空位,再将剩余的2*2 的空位转换成1*1 的空位;最后处理1*1 的产品,比较一下1*1的空位与1*1 的产品数目,如果空位多,将1*1 的产品全部填入空位,否则,先将1*1 的空位填满,然后再为1*1 的产品打开新的箱子。

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<vector>
 6 using namespace std;
 7 int a1,a2,a3,a4,a5,a6;
 8 int main()
 9 {
10     int n;//盒子数目
11     int x;//1*1盒子数
12     int y;//2*2盒子数
13     int t[4]={0,5,3,1};//3*3可以容纳2*2的个数
14     while(cin>>a1>>a2>>a3>>a4>>a5>>a6)
15     {
16         n=0;
17         if(a1==0&&a2==0&&a3==0&&a4==0&&a5==0&&a6==0)
18             break;
19         n+=a6+a5+a4+(a3+3)/4;
20         y=5*a4+t[a3%4];
21         if(a2>y)
22             n+=(a2-y+8)/9;
23         x=36*n-36*a6-25*a5-16*a4-9*a3-4*a2;
24         if(a1>x)
25             n+=(a1-x+35)/36;
26         cout<<n<<endl;
27     }
28     return 0;
29 }
View Code

 C题:http://bailian.openjudge.cn/exam/1511/3/

这题很水的一道题,就不写题解了,直接贴代码

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<string>
 5 #include<cmath>
 6 using namespace std;
 7 const int maxn=101;
 8 int a[maxn];
 9 int main()
10 {
11     int t;
12     int n;
13     cin>>t;
14     while(t--)
15     {
16         cin>>n;
17         memset(a,0,sizeof(a));
18         for(int i=1;i<=n;i++)
19         {
20             for(int j=i;j<=n;j++)
21                 if(j%i==0)
22                 a[j]=!a[j];
23         }
24         int cnt=0;
25         for(int i=1;i<=n;i++)
26             if(a[i])
27                 ++cnt;
28             cout<<cnt<<endl;
29     }
30 }
View Code

 

百练个人测试

标签:

原文地址:http://www.cnblogs.com/wolf940509/p/4637812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!