1 条题解

  • 1
    @ 2024-11-13 21:29:06
    #include<iostream>
    using namespace std;
    long long n,c,w[1005],s[1005],ans;//不开long long见祖宗 
    
    void dfs(int u,long long t){
    	ans=max(ans,t);
    	if(u==1) return;
    	if(t+s[u]<ans) return;//前缀和剪枝
    	if(t+w[u]<=c) dfs(u-1,t+w[u]);
    	dfs(u-1,t); 
    }
    
    int main(){
    	freopen("scales.in","r",stdin);
    	freopen("scales.out","w",stdout);
    	scanf("%d%d",&n,&c);
    	for(int i=1;i<=n;i++){
    		scanf("%d",&w[i]);
    		s[i]=w[i]+s[i-1];//前缀和
    	}
    	dfs(n,0);
    	printf("%d",ans);
    	return 0;
    }
    

    信息

    ID
    1617
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    256
    已通过
    22
    上传者