深搜+桶
2026-09-05 14:07:49
发布于:广东
4阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=250;
ll n,m,a[N],b[N],c[N],d[N],vis[N],t[N],tt[N],ans=1e9;
bool ch(){
memset(tt,0,sizeof tt);
for(int i=1;i<=m;i++){
if(vis[i]==1){
for(int j=a[i];j<=b[i];j++){
tt[j]+=c[i];
}
}
}
for(int i=0;i<=100;i++){
if(tt[i]<t[i])return 0;
}return 1;
}
void dfs(ll u,ll sum){
if(u==m+1){
if(ch())ans=min(ans,sum);
return;
}
vis[u]=1;
dfs(u****um+d[u]);
vis[u]=0;
dfs(u****um);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
int x,y,z;
cin>>x>>y>>z;
for(int j=x;j<=y;j++)t[j]+=z;
}for(int i=1;i<=m;i++){
cin>>a[i]>>b[i]>>c[i]>>d[i];
}dfs(1,0);
cout<<ans;
return 0;
}
这里空空如也







有帮助,赞一个