请求加强数据或缩短时限
  • 板块P1705 爱与愁过火
  • 楼主CD43
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/12/27 22:15
  • 上次更新2023/10/24 06:22:46
查看原帖
请求加强数据或缩短时限
755114
CD43楼主2022/12/27 22:15

该题搜索加微弱剪枝(极限剪枝的一半)就能过(2760ms) 附代码

#include<bits/stdc++.h>
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
//#define connect(ax,bx) (string)(ax)+(string)(bx)
using namespace std;
int m,r,n;
int mmap[10001];
bool bmmap[10001];
int dfs(int f,int m2,int j)
{
	if(f>=r)
	{
		if(m2>n)return 1;
		return 0;
	}
	int t=0;
	for(int i(j+1);i<=m-r+1+f;i++)
	{
		if(bmmap[i]==0)
		{
			bmmap[i]=1;
			t+=dfs(f+1,m2+mmap[i],i);
//			if(t==t1)break;
//			t1=t;
			bmmap[i]=0;
		}
	}
	return t;
}
int main()
{
	cin.tie(0);
	cout.tie(0);
	ios_base::sync_with_stdio(0);
	cin>>m>>r>>n;
	for(int i(1);i<=m;i++)cin>>mmap[i];
	sort(mmap+1,mmap+m+1);
	cout<<dfs(0,0,0);
	return 0;
}
//register 
//\n %d
//========================================

建议缩短时间或加强数据或降红题

2022/12/27 22:15
加载中...