So easy(借助AI)
2026-02-10 15:30:17
发布于:浙江
24阅读
0回复
0点赞
深度优先搜索+暴力枚举
#include<iostream>
#include<vector>
using namespace std;
struct Cow{
int s,t,c;
};
struct AC{
int a,b,p,m;
};
int N,M;
vector<Cow> cows;
vector<AC> acs;
int mincost=1e9;
void dfs(int index,vector<int> &on){
if(index==M){
int totalCost=0;
for(int i=0;i<M;i++){
if(on[i]){
totalCost+=acs[i].m;
}
}
vector<int> cooling(101,0);
for(int i=0;i<M;i++){
if(on[i]){
for(int j=acs[i].a;j<=acs[i].b;j++){
cooling[j]+=acs[i].p;
}
}
}
bool ok=true;
for(int i=0;i<N;i++){
for(int j=cows[i].s;j<=cows[i].t;j++){
if(cooling[j]<cows[i].c){
ok=false;
break;
}
}
if(!ok){
break;
}
}
if(ok){
mincost=min(totalCost,mincost);
}
return;
}
on[index]=0;
dfs(index+1,on);
on[index]=1;
dfs(index+1,on);
}
int main(){
cin>>N>>M;
cows.resize(N);//设置数组大小初始为N
for(int i=0;i<N;i++){
cin>>cows[i].s>>cows[i].t>>cows[i].c;
}
acs.resize(M);
for(int i=0;i<M;i++){
cin>>acs[i].a>>acs[i].b>>acs[i].p>>acs[i].m;
}
vector<int> on(M);
dfs(0,on);
cout<<mincost;
}
这里空空如也







有帮助,赞一个