zoukankan      html  css  js  c++  java
  • 尼克的任务

     

    Time Limit:   1000MS       Memory Limit:   65535KB
    Submissions:   512       Accepted:   178
    Description 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成。 尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束。当尼克到达单位后他就开始干活。如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去完成,假如某些任务开始时刻尼克正在工作,则这些任务也由尼克的同事完成。如果某任务于第P分钟开始,持续时间为T分钟,则该任务将在第P+T-1分钟结束。 写一个程序计算尼克应该如何选取任务,才能获得最大的空暇时间。
    Input输入数据第一行含一个空格隔开的整数N和K(1≤n≤10000,1≤k≤10000),N表示尼克的工作时间单位为分钟,K表示任务总数。 接下来共有K行,每一行有两个用空格隔开的整数P和T,表示该任务从第P分钟开始,持续时间为T分钟,其中1≤P≤N,1≤P+T-1≤N。
    Output输出文件仅一行,包含一个整数,表示尼克可能获得的最大空暇时间。

    Sample Input

    15	6
    1	2
    1	6
    4	11
    8	5
    8	1
    11	5

    Sample Output

    4
    #include <iostream>
    #include <cstring>
    using namespace std;
    
    int main()
    {
        int p[10005][20], dp[10005];
        int Time, N;
        int s, len;
        while(cin>>Time>>N)
        {
            memset(p, 0, sizeof(p));
            memset(dp, 0, sizeof(dp));
            for (int i = 0; i < N; i++)
            {
                cin>>s>>len;
                p[s][0]++;
                p[s][p[s][0]] = len;
            }
            for (int i = Time; i >= 1; i--)
            {
                if (p[i][0] == 0)
                {
                    dp[i] = dp[i + 1] + 1;
                }
                else
                    if (p[i][0] == 1)
                    {
                        dp[i] = max(dp[i + p[i][1]], dp[i]);
                    }
                    else
                    {
                        for (int j = 1; j <= p[i][0]; j++)
                        {
                            dp[i] = max(dp[i], dp[i + p[i][j]]);
                        }
                    }
            }
            cout<<dp[1]<<endl;
        }
        return 0;
    }
  • 相关阅读:
    poj 2411 Mondriaan's Dream 骨牌铺放 状压dp
    zoj 3471 Most Powerful (有向图)最大生成树 状压dp
    poj 2280 Islands and Bridges 哈密尔顿路 状压dp
    hdu 3001 Travelling 经过所有点(最多两次)的最短路径 三进制状压dp
    poj 3311 Hie with the Pie 经过所有点(可重)的最短路径 floyd + 状压dp
    poj 1185 炮兵阵地 状压dp
    poj 3254 Corn Fields 状压dp入门
    loj 6278 6279 数列分块入门 2 3
    VIM记事——大小写转换
    DKIM支持样本上传做检测的网站
  • 原文地址:https://www.cnblogs.com/lzmfywz/p/2677872.html
Copyright © 2011-2022 走看看