zoukankan      html  css  js  c++  java
  • POJ3616

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    int dp[10050];
    struct sa{
        int x,y,sum;
    }p[10050];
    //我觉得结构体的基础知识你得复习下 
    int cmp(const sa a,const sa b){
        if(a.x==b.x) return a.y<b.y;
        return a.x<b.x;
    } 
    //比较函数 
    int main(){
        int n,m,t;
        scanf("%d%d%d",&n,&m,&t);
        //一个整个时间段,一个是 能挤几次,最后一个是要恢复的时间
        for(int i=0;i<m;i++){
            scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].sum);
            //每次挤的时间区间和能挤出的量 
            p[i].y+=t;
            //把延续的时间一加,就当这个时间段都只能做一个了 
        } 
        sort(p,p+m,cmp);
        //这个排序要看上面的cmp,挺值得学习的
        //另外这个排序对于这个题也挺关键的
        for(int i=m-1;i>=0;i--){
            dp[i]=p[i].sum;
            //嗯因为是在外面定义的所以全是零喽
            //至于i的开始我觉得你得去问问你的排序怎么排的 
            for(int j=i+1;j<m;j++)
                if(p[j].x>=p[i].y){
                    dp[i]=max(dp[i],dp[j]+p[i].sum);
                }
            //转印方程还得思考思考
            //类比才是王道,直接类比个地下城的刷图,固定下时间就ok
            //我觉得这转移方程也不好想吖 
        } 
        int maxx=0;
        for(int i=0;i<m;i++)
        maxx=max(maxx,dp[i]);
        cout<<maxx<<endl;
        return 0;
        
    }
  • 相关阅读:
    Java环境搭建
    Java语言的分支
    Java语言概述
    计算机语言
    人机交互
    计算机分类
    计算机的应用领域
    计算机的发展史
    Java8的一些新特性
    python国内三方库下载镜像
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12861849.html
Copyright © 2011-2022 走看看