hdu 4502简单dp题

2015-01-27 10:08:52 · 作者: · 浏览: 9

dp【i】 表示第i天能赚得的最大工资

#include
  
   
#include
   
     #include
    
      #include
      
      using namespace std
      ; struct node
       { int star
      ,end
      ,cost
      ; }A
      [1100
      ]; int max
      (int a
      ,int b
      ) { return a
      >b
      ?a
      :b
      ; } int cmp
      (node a
      ,node b
      ) { return a
      .end
      <b
      .end
      ; } int main() { int i
      ,j
      ,n
      ,m
      ,c
      ,T
      ; int dp
      [1100
      ]; scanf
      ("%d"
      ,&T
      ); while(T
      --) { scanf
      ("%d%d"
      ,&m
      ,&n
      ); for(i
      =1
      ;i
      <=n
      ;i
      ++) { scanf
      ("%d%d%d"
      ,&A
      [i
      ].star
      ,&A
      [i
      ].end
      ,&A
      [i
      ].cost
      ); } //sort(A+1,A+1+n,cmp); memset
      (dp
      ,0
      ,sizeof(dp
      )); for(i
      =1
      ;i
      <=m
      ;i
      ++) { for(j
      =1
      ;j
      <=n
      ;j
      ++) { if(A
      [j
      ].end
      <=i
      &&A
      [j
      ].star
      -1
      >=0
      ) { dp
      [i
      ]=max
      (dp
      [i
      ],dp
      [A
      [j
      ].star
      -1
      ]+A
      [j
      ].cost
      ); } } } printf
      ("%d\n"
      ,dp
      [m
      ]); } return 0
      ; }