zoukankan      html  css  js  c++  java
  • hdoj 2546 饭卡

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546

    解题思路:贪心+01背包

      1 ///////////////////////////////////////////////////////////////////////////
      2 //problem_id: hdoj 2546
      3 //user_id: SCNU20102200088
      4 ///////////////////////////////////////////////////////////////////////////
      5 
      6 #include <algorithm>
      7 #include <iostream>
      8 #include <iterator>
      9 #include <iomanip>
     10 #include <cstring>
     11 #include <cstdlib>
     12 #include <string>
     13 #include <vector>
     14 #include <cstdio>
     15 #include <cctype>
     16 #include <cmath>
     17 #include <queue>
     18 #include <stack>
     19 #include <list>
     20 #include <set>
     21 #include <map>
     22 using namespace std;
     23 
     24 ///////////////////////////////////////////////////////////////////////////
     25 #pragma comment(linker,"/STACK:1024000000,1024000000")
     26 
     27 #define lson l,m,rt<<1
     28 #define rson m+1,r,rt<<1|1
     29 ///////////////////////////////////////////////////////////////////////////
     30 
     31 ///////////////////////////////////////////////////////////////////////////
     32 const double EPS=1e-8;
     33 const double PI=acos(-1.0);
     34 
     35 const int x4[]={-1,0,1,0};
     36 const int y4[]={0,1,0,-1};
     37 const int x8[]={-1,-1,0,1,1,1,0,-1};
     38 const int y8[]={0,1,1,1,0,-1,-1,-1};
     39 ///////////////////////////////////////////////////////////////////////////
     40 
     41 ///////////////////////////////////////////////////////////////////////////
     42 typedef long long LL;
     43 
     44 typedef int T;
     45 T max(T a,T b){ return a>b? a:b; }
     46 T min(T a,T b){ return a<b? a:b; }
     47 T gcd(T a,T b){ return b==0? a:gcd(b,a%b); }
     48 T lcm(T a,T b){ return a/gcd(a,b)*b; }
     49 ///////////////////////////////////////////////////////////////////////////
     50 
     51 ///////////////////////////////////////////////////////////////////////////
     52 //Add Code:
     53 ///////////////////////////////////////////////////////////////////////////
     54 
     55 int main(){
     56     ///////////////////////////////////////////////////////////////////////
     57     //Add Code:
     58     int n,m,i,j,a[1005],dp[1005];
     59     while(scanf("%d",&n)!=EOF){
     60         if(n==0) break;
     61         for(i=1;i<=n;i++){
     62             scanf("%d",&a[i]);
     63             if(i>1 && a[i]<a[i-1]){
     64                 int temp=a[i-1];
     65                 a[i-1]=a[i];
     66                 a[i]=temp;
     67             }
     68         }
     69         scanf("%d",&m);
     70         if(m<5){
     71             printf("%d
    ",m);
     72             continue;
     73         }
     74         for(i=0;i<=m-5;i++) dp[i]=0;
     75         for(i=1;i<=n-1;i++){
     76             for(j=m-5;j>=a[i];j--){
     77                 dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
     78             }
     79         }
     80         printf("%d
    ",m-dp[m-5]-a[n]);
     81     }
     82     ///////////////////////////////////////////////////////////////////////
     83     return 0;
     84 }
     85 
     86 ///////////////////////////////////////////////////////////////////////////
     87 /*
     88 Testcase:
     89 Input:
     90 1
     91 50
     92 5
     93 10
     94 1 2 3 2 1 1 2 3 2 1
     95 50
     96 0
     97 Output:
     98 -45
     99 32
    100 */
    101 ///////////////////////////////////////////////////////////////////////////
  • 相关阅读:
    基于比较的算法之五:堆排序
    顺序统计:寻找序列中第k小的数
    顺序统计:寻找序列中的最大最小数
    非基于比较的排序算法之一:计数排序
    基于比较的算法之四:快速排序
    基于比较的算法之三:插入排序
    基于比较的算法之二:选择排序
    基于比较的算法之一:冒泡排序
    轮廓问题/Outline Problem-->改进的算法及时间复杂度分析
    寻找最大连续子序列/Find the max contiguous subsequence
  • 原文地址:https://www.cnblogs.com/linqiuwei/p/3320630.html
Copyright © 2011-2022 走看看