【大魔法师小信】求解

我不大会,没啥思路,好心人凌晨帮我看一看

1 个赞

信友队的 LaTeX 的前后要加空格

1 个赞

第一个样例没问题,2+3+5+7=17

1 个赞

他写的错的呀

这题我也不会可以看看原题题解
https://www.luogu.com.cn/problem/P4799

我的70的部分分
#include<bits/stdc++.h>
using namespace std;
long long n,m,t,s,p,a[101],f[100000001];
void dfs(int x,long long s)
{
	if(s>m) return;
	if(x==n+1)
	{
		t++;
		return;
	}
	dfs(x+1,s+a[x]);
	dfs(x+1,s);
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;++i) cin>>a[i],s+=a[i];
	if(s<=m) t=pow(2,n);
	else
	{
		p=__gcd(m,a[1]);
		for(int i=2;i<=n;++i) p=__gcd(p,a[i]);
		m/=p;
		for(int i=1;i<=n;++i) a[i]/=p;
		if(n*m<=100000000)
		{
			f[0]=1;
			for(int i=1;i<=n;++i)
			for(int j=m;j>=a[i];--j) f[j]+=f[j-a[i]];
			for(int i=0;i<=m;++i) t+=f[i];
		}
		else dfs(1,0);
	}
	cout<<t;
	return 0; 
}

update:2024/10/5/8:13 正在看题解学习ing…

搞错了,一个求方案,一个求最大,不过类似的

你们没有提=题解码

双向搜索

又回老帖!!!!!!!!

1 个赞

别回老帖,不过还是给你解决方案(这不是题解里的)

1 个赞