复杂度玄学?
  • 板块灌水区
  • 楼主Afoat
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/10/21 14:27
  • 上次更新2023/11/5 10:15:07
查看原帖
复杂度玄学?
241036
Afoat楼主2020/10/21 14:27

洛谷没有的题,自己的暴力搜索跑的飞快

感觉复杂度玄学(好像什么枝都没减)

#include <bits/stdc++.h>
using namespace std;
int n,w;
int wei[30];
int ans[30];
int pre[30];
int tail;
int maxn;
bool cmp(int a,int b)
{
	return a>b;
}
void dfs(int k)
{
	if(tail>=maxn)
	{
		return;
	}
	if(k>n)
	{
		maxn=tail;
		return;
	}
	if(pre[k]<tail-1)
	{
		return;
	}
	pre[k]=tail;
	for(int i=1;i<=tail;i++)
	{
		if(ans[i]+wei[k]<=w)
		{
			ans[i]+=wei[k];
			dfs(k+1);
			ans[i]-=wei[k];
		}
	}
	tail++;
	ans[tail]=wei[k];
	dfs(k+1);
	ans[tail]=0;
	tail--;
	return;
}
int main()
{
	scanf("%d %d",&n,&w);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&wei[i]);
	}
	sort(wei+1,wei+1+n,cmp);
	maxn=n;
	for(int i=1;i<=n;i++)
	{
		pre[i]=INT_MAX;
	}
	dfs(1);
	printf("%d\n",maxn);
	return 0;
}
/*
5 1996
1
2
1994
12
29
*/

2020/10/21 14:27
加载中...