zoukankan      html  css  js  c++  java
  • POJ3616

    View Code
     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<algorithm>
     4 using namespace std;
     5 struct node{
     6     int l,r,val;
     7 }aa[1001];
     8 int cmp( const void *a , const void *b ) 
     9 { 
    10     node *c = (node *)a; 
    11     node *d = (node *)b; 
    12     if(c->l != d->l) return c->l - d->l; 
    13     else return c->r - d->r; 
    14 }
    15 int dp[1001];
    16 int main(){
    17     int n,m,r,ans,i,a,b,c,j;
    18     scanf("%d%d%d",&n,&m,&r);
    19     for(i=0;i<m;i++){
    20         scanf("%d%d%d",&a,&b,&c);
    21         aa[i].l=a;
    22         aa[i].r=b+r;
    23         aa[i].val=c;
    24     }
    25     qsort(aa,m,sizeof(aa[0]),cmp);
    26     ans=0;
    27     for(i=0;i<m;i++) dp[i]=aa[i].val;
    28     for(i=1;i<m;i++){//0
    29         for(j=0;j<i;j++){
    30             if(aa[i].l>=aa[j].r)
    31                 dp[i]=max(dp[i],dp[j]+aa[i].val);
    32         }
    33         ans=max(ans,dp[i]);
    34     }
    35     ans=max(ans,dp[0]);
    36     printf("%d\n",ans);
    37     return 0;
    38 }

    这道题的思想就是DP;

    首先,排序,然后,dp[i]代表的是在0到 i 段时间段之间所能得到的最多的牛奶质量。

    所以,当第一层循环到 i 时,aa[i] 如果取则 dp[i]=dp[j]+aa[i].val;(注意此时,dp[i]!=dp[i-1]+aa[i].val,因为有时间段的原因,可能 dp[i-1] 更本就不符合条件)

    如果不取,则 dp[i]=dp[i];

    keep moving...
  • 相关阅读:
    (spring-第15回【IoC基础篇】)容器事件
    javascript笔记2-引用类型
    php namespace use 命名空间
    mysql性能优化(二)
    mysql常用命令
    关于有效的性能调优的一些建议[转]
    apache htaccess
    php 换行 空格分割处理
    一些比较好的博文
    php & 引用
  • 原文地址:https://www.cnblogs.com/xxx0624/p/2722739.html
Copyright © 2011-2022 走看看