深搜+桶模拟
2026-09-05 13:45:39
发布于:广东
13阅读
0回复
0点赞
注意奶牛范围不重叠,可以用桶存。
#include<bits/stdc++.h>
using namespace std;
long long nn,mp[105],b[105],a[1000005],n,m,mi=1e18,l,r,z,zl[1000005],zr[1000005],p[1000005],j[1000005];
void dfs(int u){
if(u>m){
memset(b,0,sizeof b);
long long sum=0;
for(int i=1;i<=m;i++){
if(a[i]){
sum+=j[i];
for(int k=zl[i];k<=zr[i];k++){
b[k]+=p[i];
}
}
}
bool pp=1;
for(int i=1;i<=nn;i++){
if(b[i]<mp[i]){
pp=0;
break;
}
}
if(pp){
mi=min(mi,sum);
}
return ;
}
for(int i=0;i<=1;i++){
a[u]=i;
dfs(u+1);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>l>>r>>z;
nn=max(nn,r);
for(int k=l;k<=r;k++){
mp[k]=z;
}
}
for(int i=1;i<=m;i++){
cin>>zl[i]>>zr[i]>>p[i]>>j[i];
}
dfs(1);
cout<<mi;
return 0;
}
这里空空如也







有帮助,赞一个