1 条题解

  • 0
    @ 2024-9-6 20:50:51

    正解:

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    int n,m;
    int a[10];
    int f[10010];
    signed main()
    {
    	cin>>n;
    	for(int i=1;i<=8;i++)
    	{
    		cin>>a[i];
    		m+=a[i]*i;
    	}
    	if(m<=n)
    	{
    		cout<<m;
    		return 0;
    	}
    	if(n<=8&&a[n]!=0)
    	{
    		cout<<n;
    		return 0;
    	}
    	int k=n;
    	for(int i=8;i>=1;i--)
    		n%=i;
    	cout<<k-n;
    }
    
    • [ ] ---
    #include <bits/stdc++.h>
    using namespace std;
    long long a[11],w,ans = 0;
    void dfs(long long i,long long c){
    	if(i == 9) ans = max(ans,c);
    	else for(long long k = 0,j = min((w - c) / i,a[i]) ; k < 9 && j >= 0 ; k++,j--) dfs(i+1,c+i*j);
    }
    int main(){
    	cin >> w;
    	for(int i = 1 ; i < 9 ; i++) cin >> a[i];
    	dfs(1,0);
    	cout << ans << endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    3185
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    126
    已通过
    6
    上传者