当前位置: 首页 > news >正文

P1280 尼克的任务【洛谷算法习题】

P1280 尼克的任务

网页链接

P1280 尼克的任务

题目描述

尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成。

尼克的一个工作日为n nn分钟,从第1 11分钟开始到第n nn分钟结束。当尼克到达单位后他就开始干活,公司一共有k kk个任务需要完成。如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去完成,假如某些任务开始时刻尼克正在工作,则这些任务也由尼克的同事完成。如果某任务于第p pp分钟开始,持续时间为t tt分钟,则该任务将在第( p + t − 1 ) (p+t-1)(p+t1)分钟结束。

写一个程序计算尼克应该如何选取任务,才能获得最大的空暇时间。

输入格式

输入数据第一行含两个用空格隔开的整数n nnk kk

接下来共有k kk行,每一行有两个用空格隔开的整数p ppt tt,表示该任务从第p pp分钟开始,持续时间为t tt分钟。

输出格式

输出文件仅一行,包含一个整数,表示尼克可能获得的最大空暇时间。

输入输出样例 #1

输入 #1

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

输出 #1

4

说明/提示

数据规模与约定
  • 对于100 % 100\%100%的数据,保证1 ≤ n ≤ 10 4 , 1 ≤ k ≤ 10 4 , 1 ≤ p ≤ n , 1 ≤ p + t − 1 ≤ n 1 \leq n \leq 10^4,1 \leq k \leq 10^4,1 \leq p \leq n,1 \leq p+t-1 \leq n1n104,1k104,1pn,1p+t1n

解题思路

本题核心是逆序动态规划,反向推导最优空闲时间,规避正向决策的后效性。定义dp[i]表示从第i ii分钟到下班的最大空闲时间。从最后一分钟向前遍历:若当前分钟无任务,空闲时间等于下一分钟空闲时间加1;若有任务,遍历所有任务,选择任务结束后空闲时间最大的方案。逆序遍历保证决策无后效,直接筛选最优任务,时间复杂度O ( n + k ) O(n+k)O(n+k),完美适配n 、 k ≤ 10 4 n、k≤10^4nk104的数据规模,高效算出最大空闲时间。

总结

核心逻辑:逆序DP从后往前计算各时间点最大空闲,无任务累加空闲、有任务选最优结束点。
关键操作:按任务开始时间分组、逆序遍历、状态转移取最大值。
效率保障:线性遍历无冗余计算,轻松处理万级数据,精准输出结果。

代码内容

#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e3+10;constll INF=1e18;constll M=1e6+10;constll mod=1e9+7;intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);ll n,k,s,t;scanf("%lld%lld",&n,&k);vector<ll>v[10001];while(k--){scanf("%lld%lld",&s,&t);v[s].push_back(t);}ll f[10002]={0};for(ll i=n;i;i--){if(v[i].size()>0)for(ll j=0;j<(ll)v[i].size();j++)f[i]=max(f[i],f[i+v[i][j]]);elsef[i]=f[i+1]+1;}printf("%lld",f[1]);return0;}
http://www.cnnetsun.cn/news/2461247.html

相关文章:

  • 从GPIO入手,深度解析HPM6750 RISC-V MCU开发板底层驱动与实战技巧
  • 虚拟机共享文件挂载
  • RFSoC玩转跳频通信:从NCO配置到多片同步的实战指南(Zynq UltraScale+ RFSoC Gen 3)
  • Perplexity AI界面配色深度解析(WCAG 2.1 AA级通过率98.6%实测方案)
  • 大厂测试团队的组织架构:不同规模公司的测试团队有何不同
  • Nigate终极指南:在Mac上实现NTFS完美读写的最佳解决方案
  • 用LTM8001给高精度仪器供电?手把手教你搞定多路LDO阵列和RUN引脚配置
  • D2DX终极配置指南:3个关键技巧让《暗黑破坏神2》在现代PC上焕发新生
  • 【没发表过创新点】【负荷预测】【多变量输入超前多步预测】基于DBO、PSO、SSA、GOOSE算法优化ELM的电力负荷预测研究附Matlab代码
  • 书成紫微动,律定凤凰驯:海棠山铁哥行天道,一书一标定人间秩序
  • 别再只把JTAG当烧录器了!一文搞懂它的边界扫描(Boundary-Scan)到底怎么玩
  • 018、NPU中的存储层次:全局缓存、本地缓存、寄存器文件
  • Rust错误处理:Result与Error深度解析
  • 在线去除视频水印工具对比|在线去本地视频水印工具推荐,2026年实测对标
  • 从1秒到60ms:手把手教你用STM32硬件SPI驱动GC9A01 LCD,性能飙升实战
  • 阿里面试官冷笑:“现在上下文窗口都 200 万 token 了,你的 RAG 还有存在的必要吗?“ 我算了一笔账,他沉默了
  • 【Perplexity编程搜索实战指南】:20年工程师亲授5大高效编码检索技巧,告别无效搜索!
  • MTK联发科4G安卓主板开发指南:从硬件选型到低功耗与网络优化
  • 如何在Chrome中一键转换图片格式:Save Image as Type终极指南
  • 利润增长,是设计出来的
  • 全域粒子质量几何曲率统一公式体系(通俗易懂版)
  • Perplexity新闻搜索失效真相:LLM缓存机制、地域策略与时间戳偏移的三重干扰(内部技术备忘录节选)
  • RAG+Embedding多路召回实测:基于搜搜果GEO优化工具拆解SaaS品牌AI曝光逻辑
  • 桌面歌词神器LyricsX:让音乐与文字同步起舞的终极指南
  • 转行对谈:转向AI是破茧成蝶还是折翼未来?
  • SPSS毕业论文救星:一键导入三线表模板,告别手动调整格式的烦恼
  • 如何用Nucleus Co-Op轻松实现单机游戏本地分屏多人体验
  • Perplexity搜索结果泛化严重?紧急启用「设计意图锁定协议」——20年UX架构师压箱底的5行元提示词
  • windoes terminal终端右键菜单快捷配置
  • STM32F108C8T6小白入门特训营__1.5main.c代码分析