我是靠谱客的博主 飞快大神,最近开发中收集的这篇文章主要介绍记忆化搜索+背包问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

入侵和反击
A国部署的反导系统遇到了一个致命BUG,那就是每一次发射的拦截导弹的飞行高度都将只能小于等于上一枚导弹的飞行高度,第一次发射的拦截导弹的飞行高度可以看作是足够大。对于A国,这是一件很严重的问题,这意味着A国的防空系统面临空前危机。

通过对A国的军事部门计算机的入侵,A国还不知道敌对国B国刚才已经发现了这项BUG。更不知道,在这项BUG的报告书上交到B国空军司令部那一刻,三分钟后B国的全体高级空军军官已经在作战室讨论作战方案。

如果战争真的开始,B国将依次派出n架战斗机A国将依次发射拦截导弹,这n架飞机的飞行高度分别是h1h2h3…hn。B国将要充分利用这项漏洞,考虑到这么一种情况,假设只要A国的导弹的飞行高度大于等于B国飞机就能百分之百地锁定并击落,那么B国,最少将会有几架不被击落飞机?

#include<bits/stdc++.h>
using namespace std;
const int maxn = 20000+5;
int t,n;
int h[maxn];
int dp[maxn];
int main(){
cin>>t;
int cnt,temp;
while(t--){
cnt=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>h[i];
}
for(int i=0;i<n;i++){
dp[i]=1;
for(int j=0;j<i;j++){
if(h[j]>=h[i]){
dp[i]=max(dp[i],dp[j]+1);
}
}
}
int m=-1;
for(int i=0;i<n;i++){
m=max(m,dp[i]);
}
cout<<n-m<<endl;
}
}

红红绝地求生
红红最近迷上了吃鸡,房间有n个配件,每一个配件的重量为c(<=1e3),和价值为v(v <= 1e3)假设红红刚落地就捡到一个三级包,容量为S,请问红红可以成为多肥的快递员?

#include<bits/stdc++.h>
using namespace std;
const int maxn = 12880 + 5;
int w[maxn],d[maxn],dp[maxn];
int main(){
int n,m,t;
cin>>t;
while(t--){
memset(w,0,sizeof w);
memset(d,0,sizeof d);
memset(dp,0,sizeof dp);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>d[i];
}
for(int i=1;i<=n;i++){
cin>>w[i];
}
for(int i=1;i<=n;i++){
for(int j=m;j>=w[i];j--){
dp[j]=max(dp[j],dp[j-w[i]]+d[i]);
}
}
cout<<dp[m]<<endl;
}
return 0;
}

红红减肥记
对于吃货来说,过年最幸福的事情就是吃,没有之一!
但是对于红红来说,卡路里(热量)是天敌。
红红想要一个健美的身材,所以需求舒舒设定了一个健康且幸福的食谱计划。
为了方便食谱的制作,舒舒给红红的每日清单上面描述了当天她想吃的食物给他的幸福度,以及会增加卡路里。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 100000;
int w[maxn],v[maxn],dp[maxn];
int n,m;
int main(){
while(cin>>n){
for(int i = 1;i<=n;i++){
cin>>v[i]>>w[i];
}
cin>>m;
for(int i=1;i<=n;i++){
for(int j=w[i];j<=m;j++){
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
cout<<dp[m]<<endl;
}
return 0;
}

最后

以上就是飞快大神为你收集整理的记忆化搜索+背包问题的全部内容,希望文章能够帮你解决记忆化搜索+背包问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部