[关闭]
@Alpacadh 2019-02-25T23:47:02.000000Z 字数 1977 阅读 749

DEF

背包


D - Jin Ge Jin Qu hao

题意:

解题思路:

代码:

  1. //#include<bits/stdc++.h>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<string.h>
  7. #include<stdio.h>
  8. #include<cstdlib>
  9. #include<cstdio>
  10. using namespace std;
  11. const int inf=0x3f3f3f3f;
  12. const int N=1e4+5;
  13. const double eps=1e-4;
  14. typedef long long ll;
  15. typedef pair<int,ll> pil;
  16. int dp[N];
  17. int a[N];
  18. int main()
  19. {
  20. int t;
  21. scanf("%d",&t);
  22. int tot=1;
  23. while(t--)
  24. {
  25. int n,m;
  26. scanf("%d%d",&n,&m);
  27. memset(dp,-1,sizeof(dp));
  28. dp[0]=0;
  29. for(int i=0;i<n;i++)
  30. {
  31. scanf("%d",&a[i]);
  32. }
  33. for(int i=0;i<n;i++)
  34. {
  35. for(int j=m-1;j>=a[i];j--)
  36. {
  37. dp[j]=max(dp[j],dp[j-a[i]]+1);
  38. }
  39. }
  40. int ans=0,pos=0;
  41. for(int i=m-1;i>=0;i--)
  42. {
  43. if(dp[i]>ans)
  44. {
  45. ans=dp[i];
  46. pos=i;
  47. }
  48. }
  49. printf("Case %d: %d %d\n",tot++,ans+1,pos+678);
  50. }
  51. return 0;
  52. }

E - Team Them Up!

题意:

解题思路:

代码:

参考https://blog.csdn.net/u013007900/article/details/38512039

F - Piggy-Bank

题意:

解题思路:

代码:

  1. //#include<bits/stdc++.h>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<string.h>
  7. #include<stdio.h>
  8. #include<cstdlib>
  9. #include<cstdio>
  10. using namespace std;
  11. const int inf=0x3f3f3f3f;
  12. const int N=2e4+5;
  13. const double eps=1e-4;
  14. typedef long long ll;
  15. typedef pair<int,ll> pil;
  16. int dp[N];
  17. int v[N],w[N];
  18. int main()
  19. {
  20. int t;
  21. scanf("%d",&t);
  22. while(t--)
  23. {
  24. int n,m;
  25. scanf("%d%d",&n,&m);
  26. m-=n;
  27. int tt;
  28. scanf("%d",&tt);
  29. for(int i=0;i<tt;i++)
  30. {
  31. scanf("%d%d",&v[i],&w[i]);
  32. }
  33. memset(dp,inf,sizeof(dp));
  34. dp[0]=0;
  35. for(int i=0;i<tt;i++)
  36. {
  37. for(int j=w[i];j<=m;j++)
  38. {
  39. dp[j]=min(dp[j],dp[j-w[i]]+v[i]);
  40. }
  41. }
  42. if(dp[m]>=inf)
  43. printf("This is impossible.\n");
  44. else
  45. printf("The minimum amount of money in the piggy-bank is %d.\n",dp[m]);
  46. }
  47. return 0;
  48. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注