洛谷P1280 尼克的任务【线性dp】】的更多相关文章

题意概括 线性资源分配的问题,因为空闲的时间大小看后面的时间(反正感觉这个就是个套路)所以从后往前DP. 转移方程 如果当前时刻没有工作 f[i]=f[i+1]+1 如果当前时刻有工作 f[i]=max(f[i],f[i+时间段]) 完整代码 #include <bits/stdc++.h> using namespace std; map<int,int> f,sum; int p; struct node { int ks,js; }num[10005]; bool cmp(n…
题目大意:给定 N 个数字,编号分别从 1 - N,M 个位置,N 个数字按照相对大小顺序放在 M 个位置里,每个数放在每个位置上有一个对答案的贡献值,求一种摆放方式使得贡献值最大. 题解:一道典型的线性dp问题,设 \(dp[i][j]\) 表示前 i 个数摆放在了不超过前 j 个位置,且第 i 个数字正好放在 j 个位置的最大贡献值. 阶段:已经摆放了 i 个数字. 状态转移方程为:\(dp[i][j]=max\{dp[i-1][k],k\in[i-1,j) \}+mp[i][j]\). 需…
次元传送门:洛谷P1070 思路 一开始以为要用什么玄学优化 没想到O3就可以过了 我们只需要设f[i]为到时间i时的最多金币 需要倒着推回去 即当前值可以从某个点来 那么状态转移方程为: f[i]=max(f[i],f[i-k]+val-cost[now]); now表示从now这个工厂来 cost表示在now买下了机器人 val为从now走i个单位时间路上可收集的总金币 代码 #include<iostream> #include<cstring> using namespac…
题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了444种核苷酸,简记作A,C,G,TA,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类基因工作组的任务中,生物学家研究的是:两个基因的相似程度.因为这个研究对疾病的治疗有着非同寻常的作用. 题目描述 两个基因的相似度的计算方法如下: 对于两个已知基因,例如AGTGATGAGTGATGAGTGATG和GTTAGGTTAGGTTAG,将它们的碱基互相对应.当然,中间可以加入一些空碱基-,…
题目:https://www.luogu.org/problemnew/show/P1280 题意: 给定k个任务的开始时间和持续时间要求在n时间内完成.问如何安排工作使得休息时间最多. 思路: 用dp[i]表示i~n的时间内的最长休息时间. 每一个时间点只有两种可能:有工作or没有工作在此时开始 如果没有工作,那么只用上一个空闲时间+1就行了 如果有工作,那么也只有两种选择,做或者不做.也就是dp[i]和dp[i+mission[id].last]中选择较大者. 从后往前推是因为前面的时间点的…
题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束.当尼克到达单位后他就开始干活.如果在同一时刻有多个任务需要完戍,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去完成,假如某些任务开始时刻尼克正在工作,则这些任务也由尼克的同事完成.如果某任务于第P分钟开始,持续时间为T分钟,则该任务将…
题目传送门 题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束.当尼克到达单位后他就开始干活.如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去完成,假如某些任务开始时刻尼克正在工作,则这些任务也由尼克的同事完成.如果某任务于第P分钟开始,持续时间为T分钟…
题目链接:https://www.luogu.org/problem/P1280 题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束.当尼克到达单位后他就开始干活.如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去完成,假如某些任务开始时刻尼克正在工作,则…
题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束.当尼克到达单位后他就开始干活.如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去完成,假如某些任务开始时刻尼克正在工作,则这些任务也由尼克的同事完成.如果某任务于第P分钟开始,持续时间为T分钟,则该任务将…
DP 题目问的是最大空暇时间,那么就定义dp[i]为第i分钟的最大空暇时间,显然满足最优子结构,我们发现dp[i]仅与其后的值有关,那么从后往前推,如果第i分钟没有任务,dp[i]=dp[i+1],如果有任务,就遍历所有任务 dp[i]=max{dp[i+task[j]]} 即本问题可以看成分组背包问题 #include <iostream> #include <cstdio> #include <algorithm> #include <cstdlib>…