PAT 1070

阳光穿透心脏的1/2处 2022-03-07 12:52 244阅读 0赞

clipboard.png
简单的贪心问题,和背包问题类似,这里不再赘述

  1. #include<iostream>
  2. #include<stdlib.h>
  3. #include<stdio.h>
  4. #include<vector>
  5. #include<cmath>
  6. #include<algorithm>
  7. using namespace std;
  8. using std::vector;
  9. const int maxn=1010;
  10. struct node{
  11. double num;
  12. double price;
  13. };
  14. bool cmp(node a,node b){
  15. return a.price>b.price;
  16. }
  17. node moc[maxn];
  18. int n;
  19. double m;
  20. int main(){
  21. double p;
  22. scanf("%d%lf",&n,&m);
  23. for(int i=0;i<n;i++){
  24. scanf("%lf",&moc[i].num);
  25. }
  26. for(int i=0;i<n;i++){
  27. scanf("%lf",&p);
  28. moc[i].price=p/moc[i].num;
  29. }
  30. sort(moc,moc+n,cmp);
  31. double money=0;
  32. for(int i=0;i<n;i++){
  33. if(m==0)
  34. break;
  35. if(moc[i].num<=m){
  36. money+=moc[i].price*moc[i].num;
  37. m-=moc[i].num;
  38. }else{
  39. money+=m*moc[i].price;
  40. m=0;
  41. }
  42. }
  43. printf("%.2f\n",money);
  44. system("pause");
  45. return 0;
  46. }

发表评论

表情:
评论列表 (有 0 条评论,244人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PAT~乙级~1070 结绳 ~Python

    目描述: 给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一...

    相关 【杭电1070】Milk

    ![这里写图片描述][20160721084340435] ![这里写图片描述][20160721084352546] 最重要的思想是在输入的时候去掉多余的输入数据。

    相关 1070. 结绳(25)

    给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串