【dp】尼克的任务

【dp】尼克的任务_第1张图片


思路:

dp + 排序


C o d e Code Code:

#include  
#include  
#include  
#define MAXN 10000
using namespace std;  
struct node{
    int p,t;
}task[MAXN+5];
bool cmp(node a,node b){return a.p<b.p;}
int f[MAXN+5],n,k;
int main()  
{ 
    scanf("%d%d",&n,&k);
    for(int i = 1; i <= k; i++)
        scanf("%d%d",&task[i].p,&task[i].t);
    sort(task + 1, task + k + 1, cmp);
    int j = k;
    for(int i = n; i >= 1; i--)
    {
        if(i != task[j].p)
            f[i] = f[i + 1] + 1;
        else
        {
            while(i == task[j].p)
            {
                if(f[i] < f[task[j].p + task[j].t])//dp
                    f[i] = f[task[j].p + task[j].t];
                j--;
            }
        }
    }
    printf("%d\n",f[1]);
    return 0;  
}  

你可能感兴趣的:(DP)