蒟蒻的求助
查看原帖
蒟蒻的求助
841626
iceeci楼主2024/12/3 15:31

为什么在本地测试点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;
}
2024/12/3 15:31
加载中...