1015—P

1.题号:1015—P

2.题意:题目是说你每周可以生产牛奶,每周生产的价格为Ci,每周需要上交的牛奶量Yi,你可以选择本周生产牛奶,也可选择提前几周生产出存储在仓库中(仓库无限大,而且保质期不考虑),每一周存仓库牛奶需要花费S元,求出所有周的需求量上交的最少花费。

3.思路:将S转换到花费中。当第 j 周牛奶的造价 Ci 大于第 i 周的造价加上 (j - i) 周的储藏费时,就使用第 i 周的,否则使用第 j 周的。注意结果用long long存。

4.感想:到最后了做的题,有些急,提交也是抱着试一试的态度,过了最好,不过再说,下一个专题希望能一天保证一道,这样有规律的渐进。

5.代码:

  1. #include<cstdio>  
  2. #include<cstring>  
  3. #include<iostream>  
  4. using namespace std;  
  5. const int maxn=10011;  
  6. int n,s;  
  7. int y[maxn],c[maxn];  
  8. int main()  
  9. {  
  10.     while(scanf("%d%d",&n,&s)!=EOF)  
  11.     {  
  12.     for(int i=0;i<n;i++)  
  13.         scanf("%d%d",&c[i],&y[i]);  
  14.     long long ans=0;  
  15.     for(int i=1;i<n;i++)  
  16.         c[i]=min(c[i-1]+s,c[i]);  
  17.     for(int i=0;i<n;i++)  
  18.         ans+=c[i]*y[i];  
  19.     printf("%lld\n",ans);  
  20.     }  
  21.     return 0;  
  22. }  

你可能感兴趣的:(ACM,贪心算法)