首页 > 代码库 > 【洛谷1280】尼克的任务
【洛谷1280】尼克的任务
我们发现这道题是有后效性的……前面的决策会对后面的产生影响……
所以我们可以反向考虑
f [ i ] 表示第i分钟至第n分钟的最大空闲时间
理论上应该排个序,不过默认有序了……
转移方程:如果该时间有任务开始,f [ i ] = max( f [ i ],f [ i+e [ i ] ])
如果没有任务,f [ i ]=f [ i+1] +1
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 using namespace std; 5 int n,k,f[10001],b[10001],e[10001]; 6 int main(){ 7 int tmp; 8 memset(f,0,sizeof(f)); 9 scanf("%d %d",&n,&k);10 for (int i=1;i<=k;i++)11 scanf("%d %d",&b[i],&e[i]);12 for (int i=n;i>=1;i--){13 tmp=0;14 while (b[k]==i){15 f[i]=max(f[i],f[i+e[k]]);16 k--;tmp=1;17 }18 if (!tmp) f[i]=f[i+1]+1;19 }20 printf("%d",f[1]);21 return 0;22 }
【洛谷1280】尼克的任务
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。