題解 P1280 【尼克的任務】
阿新 • • 發佈:2018-05-08
pri -- 我們 num p12 AI class 記錄 include
f[i]表示i~n的最長空閑時間;
如果當前無任務就休息一秒(f[i]=f[i+1]+1);
否則f[i]=max(f[i],f[i+當前工作時間]);
用結構體來記錄,我們對於每一個時刻開一個數組來存以此時刻為起始點的所有任務,下標0來表示數組中的元素個數,便於遍歷:
#include<iostream>//簡短的30行代碼 #include<cstdio> #include<algorithm> #include<cstdio> using namespace std; int n,k,f[10010]; struct cym{ int num[10010]; }a[10010]; int main() { scanf("%d%d",&n,&k); for(int i=1;i<=k;i++) { int x,y; scanf("%d%d",&x,&y); a[x].num[++a[x].num[0]]=y; } for(int i=n;i>=0;i--) { if(!a[i].num[0]) { f[i]=f[i+1]+1; continue; } for(int j=1;j<=a[i].num[0];j++) f[i]=max(f[i],f[i+a[i].num[j]]); } printf("%d",f[1]); }
題解 P1280 【尼克的任務】