#5#7TLE!求教!
查看原帖
#5#7TLE!求教!
817450
Calarence4楼主2023/10/4 13:47

求教谢谢各位orz

#include<bits/stdc++.h>

using namespace std;

struct food
{
	long long s;
	long long b;
}q[15];

int n,total_s=1,total_b=0;
long long minabs;
const long long Min = 1e9+5;
bool vis[20];

void dfs(int,int,long long);

int main()
{
	cin>>n;
	minabs=Min;
	memset(vis,false,sizeof(vis));
	for(int i=1;i<=n;i++)
		cin>>q[i].s>>q[i].b;
	dfs(0,1,minabs);
	cout<<minabs<<endl;
	return 0;
}

void dfs(int u,int index,long long nowabs)//u是搜了的数,index是搜的总数,nowabs是当前的最小值
{
	minabs=min(minabs,nowabs);
	if(u==index)
		return;
	for(index=1;index<=n;index++)
	{
		for(int i=1;i<=index;i++)
		{
			if(!vis[i])//true搜了,false没搜
			{
				total_s*=q[i].s;
				total_b+=q[i].b;
				nowabs=abs(total_s-total_b);
				vis[i]=true;
				dfs(u+1,index,nowabs);
				total_s/=q[i].s;
				total_b-=q[i].b;
				vis[i]=false;
			}
		}
	}
}
2023/10/4 13:47
加载中...