首页 > TAG信息列表 > P1280
动态规划:洛谷 P1280 尼克的任务
洛谷 P1280 尼克的任务 这是洛谷的一题绿题,考的是动态规划。我们先想状态转移方程,这是个线性的dp,那么可以考虑每一个时间,dp[]就代表0-此时间内的最大闲暇时间,但发现最大闲暇时间,前面的选择会对后面的选择产生影响,有后效性,所以不妨倒着来,从最后一个时间一直[题解]P1280
题目描述: P1280 思路: (本时刻无任务)f[i]=f[i+1]+1;//继承上一个时刻的最大空闲时间后+1 (本时刻有任务)f[i]=max(f[i],f[i+a[sum])//a[sum]表示在这个时刻的任务的持续时间,找出选择哪一个本时刻任务使空闲时间最大化 很简单的事了,用vector防爆。 代码: 本代码自带快读。 #includeP1280 尼克的任务(DP)
注意要倒序。 设f[i]表示从第i时刻到第n时刻的最大休闲时间。 ```cpp #include<cstdio> #include<iostream> #include<vector> using namespace std; const int N=10005; int f[N]; int cnt[N]; vector<int> v[N]; int n,k; int main(){ scanf("%d%d",&n,&水题挑战4: luogu P1280 尼克的任务
题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成。 尼克的一个工作日为 \(n\) 分钟,从第 \(1\) 分钟开始到第 \(n\) 分钟结束。当尼克到达单位后他就开始干活,公司一共有P1280 尼克的任务
题面:https://www.luogu.org/problem/P1280 本题唯一需要注意的是要倒序枚举,因为若正序枚举的话,在转移i的时候还没有转移i+t,所以只能倒序转移. Code: #include<iostream> #include<cstdlib> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using na洛谷 P1280 尼克的任务题解
题目链接:https://www.luogu.org/problem/P1280 题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成。 尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束。当尼克到达[Luogu P1280]尼克的任务
P1280 尼克的任务 尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束。当尼克到达单位后他就开始干活。如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去完成,假如某些任务开始时刻尼克正在工作,则【洛谷P1280】尼克的任务
题目大意:一个人在时间 [1,N] 内工作,现有 M 个任务,每个任务需要在一段固定的时间区间内完成,任务之间的时间可能有重叠。若当前时间有任务要开始,且人处于空闲状态,则一定要这个人来做,否则这个人忽略这个任务。求用以上原则进行工作的最长休息时间是多少。 题解: 若用 f[i] 表示前 i 分洛谷 P1280 尼克的任务
题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成。 尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束。当尼克到达单位后他就开始干活。如果在同一时刻有多个任务需P1280 尼克的任务
再来一道dp ~ 莫怪我蒟蒻啊…… 其实我一开始是想 f [ i ] 表示 1 ~ i 的休息时间的最大值,但是发现一个问题:第 i 时刻的最大空闲时间和之后的任务是有关系的,所以我们只能从后往前扫一遍(数据范围显然是线性的)。 那么对于空闲时间,自然等于上一刻 + 1 ,而对于一个左端点,自