B. Shaass and Bookshelf
题意
挑选一部分书放第一层,另一部分放第二层,要求第二层的宽度不超过第一层的长度,
实施
对于同一长度的第一层,第一层的宽度和越大,第二层宽度和越小,因此以长度为容量,宽度为价值跑背包数组
细节
滚动数组要注意更新的方向!!
code
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int dp[205];
int w[105],d[105];
void solve()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>w[i]>>d[i];
int sum=0,sumd=0;
memset(dp,-1,sizeof dp);
dp[0]=0;
for(int i=1;i<=n;i++)
{
for(int j=sum;j>=0;j--)
{
if(dp[j]==-1) continue;
dp[j+w[i]]=max(dp[j+w[i]],dp[j]+d[i]);
}
sum+=w[i];
sumd+=d[i];
}
for(int i=1;i<=sum;i++)
{
if(dp[i]!=-1&&sumd-dp[i]<=i)
{
cout<<i<<'\n';
return;
}
}
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}
合集:
背包问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~