为什么在本地测试点1,2都能通过,但在评测机上0分? 代码:
#include<bits/stdc++.h>
using namespace std;
const int N=15;
int n,m,ans=2147483647;
long long num[105],a[N],b[N],p[N],M[N];
int k[15];
bool vis[N];
void dfs(int s) {
if(s>m) {
return ;
}
int sum=0;
bool check=false;
for(int i=1; i<=105; i++) {
sum+=num[i];
if(sum>0) {
check=true;
break;
}
}
if(!check) {
sum=0;
for(int i=1; i<=m; i++) {
if(k[i]==-1){
break;
}else{
sum+=M[k[i]];
}
}
ans=min(ans,sum);
return ;
} else {
for(int i=k[s-1]; i<=m; i++) {
if(vis[i]) {
continue;
} else {
vis[i]=true;
k[s]=i;
num[a[i]]-=p[i];
num[b[i]+1]+=p[i];
dfs(s+1);
vis[i]=false;
k[s]=-1;
num[a[i]]+=p[i];
num[b[i]+1]-=p[i];
}
}
}
}
int main() {
for(int i=1; i<=12; i++) {
k[i]=-1;
}
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++) {
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
num[x]+=z;
num[y+1]-=z;
}
for(int i=1; i<=m; i++) {
scanf("%d%d%d%d",&a[i],&b[i],&p[i],&M[i]);
}
dfs(1);
printf("%d\n",ans);
return 0;
}