一直输出114514,dfs暴力搜索,蒟蒻求助
查看原帖
一直输出114514,dfs暴力搜索,蒟蒻求助
765461
zhangmingsheng3521楼主2023/7/15 10:18
#include"bits/stdc++.h"
using namespace std;
//a:空调价格 b:记录每个槽位已降温数值 c:空调作用范围 
//d:空调降温数值 buf:记录每个槽位需降温数值  
int n,m,k,b1,b2,s=114514,a[11],b[101],c[2][11],d[11],buf[101];
bool judge()//判读程序,为1则此前结果合法 
{
	for (int i=1;i<=101;i++)
	{
		if (buf[i]>b[i])
		{
			return 0;
		}
	}
	return 1;
}
void dfs (int dep,int ans)
{
	if (dep==m)
	{
		if (ans<s)
		{
		    if (judge()==1)
		    {
		    	s=ans;
			}
		}
		return;
	}
	dfs((dep+1),ans);
	for (int i=c[1][dep];i<=c[2][dep];i++)
	{
		b[i]+=d[dep];
	}
	dfs((dep+1),(ans+a[dep]));
	for (int i=c[1][dep];i<=c[2][dep];i++)
	{
		b[i]-=d[dep];
	}
	return;
}
int main()
{
	cin>>n>>m;
	memset(b,0,sizeof(b));
	memset(buf,0,sizeof(buf));
	for (int i=1;i<=n;i++)
	{
		cin>>b1>>b2;
		cin>>k;
		for (int o=b1;o<=b2;o++)
		{
			buf[o]+=k;
		}
	} 
	for (int i=1;i<=m;i++)
	{
		cin>>c[1][i]>>c[2][i];
		cin>>d[i]>>a[i];
	}
	dfs(m,0);
	cout<<s;
	return 0;
}
2023/7/15 10:18
加载中...