我不大会,没啥思路,好心人凌晨帮我看一看
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 个赞