codeforces 789A. Anastasia and pebbles

题目链接:http://codeforces.com/contest/789/problem/A

题意:给你n种东西,每种东西有ai个。然后你有两个包,每个包的容量都是k。你每天可以收集这些东西,但是每天不同的东西不能放在同一个包,每天包的容量都是k,问你把这些东西装完最少需要多少天。

分析:由题意可知,你每天最多可以装2k个东西,如果一个东西有x个,那么你可以用x/2k天来装一部分,剩下的就是x%2k。如果余数大于k,那你就还需要1天。如果余数等于0,就不用再加了,其他都是再需要半天。最后半天数/2+半天数%2+每一个x/2k就是答案。

AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 long long a[100005];
 5 int main() {
 6     ios_base::sync_with_stdio(0);
 7     cin.tie(0);
 8     int n;
 9     long long k;
10     cin>>n>>k;
11     long long result=0;
12     long long number=0;
13     for(int i=1;i<=n;i++){
14         cin>>a[i];
15         result+=(a[i]/(k*2));
16         a[i]=a[i]%(2*k);
17         if(a[i]>k){
18             result++;
19         }
20         else {
21             number++;
22         }
23     }
24     cout<<result+number/2+number%2<<endl;
25 
26 
27 
28 return 0;
29 }
View Code

 

posted @ 2017-06-02 22:37  BadboyQAQ  阅读(166)  评论(0编辑  收藏  举报