E dp
类似01背包,只是这里不一定取完k个,而01背包则一定取完k个
int dp[4444];
int ans;
int main(){
int n,m;
cin>>n>>m;
int i,j;
int s,d;
ans = 0;
while(n--){
cin>>s>>d;
for(i=m;i>=0;i--){
if(s<=dp[i])dp[i] += d;
else {
ans = max(ans,s-dp[i]-1);
dp[i] = s+d-1;
}
if(i>0)
dp[i] = min(dp[i],dp[i-1]);
}
}
for(i=0;i<=m;i++)ans = max(ans,86400-dp[i]);
cout<<ans<<endl;
return 0;
}
本文介绍了一种类似于01背包问题的EDP问题求解方法,通过动态规划算法实现,详细展示了核心代码逻辑,包括输入处理、状态转移方程及最终结果输出。
2095

被折叠的 条评论
为什么被折叠?



