首页 > 代码库 > HDU - 1248 寒冰王座(完全背包做法和暴力优化做法)

HDU - 1248 寒冰王座(完全背包做法和暴力优化做法)

题意:完全背包裸题

每件物品的cost就是它的value。

1.完全背包法

 1 #include <iostream>
 2 using namespace std;
 3 
 4 const int maxn=11111;
 5 int dp[maxn];
 6 
 7 int main(){
 8     int t;
 9     cin>>t;
10     int value[4]={0,150,200,350};
11     while(t--){
12         int n;
13         cin>>n;
14         for(int i=1;i<=3;i++){
15             for(int j=value[i];j<=n;j++){
16                 dp[j]=max(dp[j],dp[j-value[i]]+value[i]);
17             }
18         }
19         cout<<n-dp[n]<<endl;
20     }
21     return 0;
22 }

 2.暴力优化法(转):

这种方法就是暴力出所有的不给小费的情况 最多就200个 所以不会超时

可以发现350以后,只要是50的倍数 就会付0小费     所以我们也可以把我下面复杂的暴力过程去掉//=.=厉害了!

 1 #include<stdio.h>
 2 int main(){
 3     int t,n;
 4     int list[6]={0,50,100,0,0,50};
 5     scanf("%d",&t);
 6     while(t--){
 7         scanf("%d",&n);
 8         if(n<300) printf("%d\n",n%50+list[n/50]);
 9         else printf("%d\n",n%50);
10     }
11     return 0;
12 }

 

HDU - 1248 寒冰王座(完全背包做法和暴力优化做法)