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

      传送门^o^

    时隔多年再来看这题,居然不太会写了

    思路:

      应该都会想到设f[i]表示从1~i最大的空闲时间

      那么如果i时刻有任务 f[i]=f[i-1]

      如果没有任务 f[i]=f[i-1]+1

      但是这样不知道怎么处理啊

      正难则反啊!

      f[i]表示i~n最大空闲时间

      倒过来枚举 发现f[i]和第i时刻开始的任务有关 就可以转移啦

    CODE:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #define go(i,a,b) for(register int i=a;i<=b;i++)
     5 #define yes(i,a,b) for(register int i=a;i>=b;i--)
     6 #define ll long long
     7 #define db double
     8 #define M 10000+10
     9 using namespace std;
    10 int read()
    11 {
    12     int x=0,y=1;char c=getchar();
    13     while(c<'0'||c>'9') {if(c=='-') y=-1;c=getchar();}
    14     while(c>='0'&&c<='9') {x=(x<<1)+(x<<3)+c-'0';c=getchar();}
    15     return x*y;
    16 }
    17 int n,m,f[M],sm[M];
    18 struct node{int b,l;}a[M];
    19 bool cmp(node x,node y){return x.b>y.b;}
    20 int main()
    21 {
    22     n=read();m=read();
    23     go(i,1,m) a[i].b=read(),a[i].l=read(),sm[a[i].b]++;
    24     int k=1;
    25     sort(a+1,a+m+1,cmp);
    26     yes(i,n,1)
    27     {
    28         if(!sm[i]) f[i]=f[i+1]+1;
    29         go(j,1,sm[i])
    30         {f[i]=max(f[i],f[i+a[k].l]);k++;}
    31     }
    32     printf("%d",f[1]);
    33     return 0;
    34 }
    View Code
    光伴随的阴影
  • 相关阅读:
    MySQL复制表结构和内容到另一张表中的SQL
    Page Cache(页缓存)
    mmap 与 munmap
    Shenandoah 与 ZGC
    InfluxDB入门
    SparkSQL 疫情Demo练习
    CyclicBarrier 解读
    mysql存储过程
    Kibana7.3.2与ElasticSearch7.3.2的集成
    Greenplum简介
  • 原文地址:https://www.cnblogs.com/forward777/p/10339712.html
Copyright © 2011-2022 走看看