Evanyou Blog 彩带

  题目传送门

西瓜种植

题目限制

时间限制 内存限制 评测方式 题目来源
1000ms 131072KiB 标准比较器 Local

题目背景

笨笨:小西瓜,小西瓜~
路人甲:不会呀,这西瓜明明就大着啊……
笨笨:那……大西瓜,大西瓜~
路人甲:这么快就改口了……
笨笨:西瓜西瓜~可爱的西瓜~

题目描述

  笨笨种了一块西瓜地,但这块西瓜地的种植范围是一条直线的……
  笨笨在一番研究过后,得出了m个结论,这m个结论可以使他收获的西瓜最多。
  笨笨的结论是这样的:
  从西瓜地B处到E处至少要种植T个西瓜,这个范围的收获就可以最大化。
  笨笨不想那么辛苦,所以他想种植的西瓜尽量少,而又满足每一个所得的结论。

输入格式

第一行两个数n,m(0<n<=5000,0<=m<=3000),表示笨笨的西瓜地长n,笨笨得出m个结论。
接下来m行表示笨笨的m个结论,每行三个数b,e,t(1<=b<=e<=n,0<=t<=e-b+1)。

输出格式

输出笨笨最少需种植多少西瓜。

提示

基本上来说,笨笨的西瓜地就是一条壮观的线……笨笨原创。

样例数据

输入样例 #1输出样例 #1
9 4
1 4 2
4 6 2
8 9 2
3 5 2
5

  分析:

  本来这题和$POJ1201$是一样的,但是输入格式不同,于是导致了我们本校$OJ$上出现一堆玄学错误。。。哎,不说了不说了,直接上代码。

  Code:

//It is made by HolseLee on 25th Aug 2018
//JOYOI watermelon
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<vector>
#include<queue>
#define Max(a,b) (a)>(b)?(a):(b)
#define Min(a,b) (a)<(b)?(a):(b)
using namespace std;

const int N=5005;
int n,m,dis[N];
bool vis[N];
struct Edge{
    int to,val;

    Edge(const int &x,const int &y):to(x),val(y) {}
};
vector<Edge>e[N];
queue<int>t;

inline int read()
{
    char ch=getchar();int num=0;
    while(ch<'0'||ch>'9')ch=getchar();
    while(ch>='0'&&ch<='9'){
        num=(num<<1)+(num<<3)+(ch^48);
        ch=getchar();
    }
    return num;
}

void spfa()
{
    for(int i=1;i<=n;++i)dis[i]=-1e9;
    t.push(0);dis[0]=0;vis[0]=1;
    int x,y;
    while(!t.empty()){
        x=t.front();t.pop();
        vis[x]=0;
        for(int i=0;i<e[x].size();++i){
            y=e[x][i].to;
            if(dis[y]<dis[x]+e[x][i].val){
                dis[y]=dis[x]+e[x][i].val;
                if(!vis[y])t.push(y),vis[y]=1;
            }
        } 
    }
}

int main()
{
    n=read(),m=read();
    int x,y,z;
    for(int i=1;i<=m;++i){
        x=read(),y=read(),z=read();
        e[x-1].push_back(Edge(y,z));
    }
    for(int i=1;i<=n;++i){
        e[i-1].push_back(Edge(i,0));
        e[i].push_back(Edge(i-1,-1));
    }
    spfa();
    printf("%d
",dis[n]);
    return 0;
}
原文地址:https://www.cnblogs.com/cytus/p/9535410.html