n个物品(属性有种类,价值,体积)
每个种类的物品挑一个,装入背包(V) , 体积不超V
问最小价值的物品最大是多少?
二分答案,即这个最小价值md
检验: 贪心,只考虑 V[i] >=md 的物品,每个种类挑体积最小的
看能否满足条件
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
#define N 1003
struct T{
int cost,v;
T(int c,int v):cost(c),v(v){
}
};
vector<T> a[N];
map<string,int> mp;
int n,m,cnt;
int ID(string s){
if(!mp.count(s)) mp[s]=++cnt;
return mp[s];
}
int test(int x){
int i,j,s=0;
for(i=1;i<=cnt;i++){
int mn=m+1;
for(j=0;j<a[i].size();j++)
if(a[i][j].v>=x) mn=min(mn,a[i][j].cost);
if(mn==m+1) return 0;
s+=mn;
if(s>m) return 0;
}
return 1;
}
int main(){
int cas;
cin>>cas;
while(cas--){
cin>>n>>m;
int i,l=0,r;
cnt=0;
mp.clear();
for(i=1;i<=n;i++) a[i].clear();
r=0;
for(i=1;i<=n;i++){
string type,s;
int v,cost;
cin>>type>>s>>cost>>v;
r=max(r,v);
a[ID(type)].push_back(T(cost,v)) ;
}
int ans;
while(l<=r){
int md=(l+r)/2;
if(test(md)) l=md+1,ans=md; else r=md-1;
}
printf("%d\n",ans);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!