看不懂题目意思

3 条评论

  • #include<bits/stdc++.h>
    using namespace std;
    int const N=3505; 
    int n,V,w[N],v[N];
    int dp[N][13005];
    int k(int a)
    {
        int sum=0;
        for(int j=1;j<a;j++)
        {
            if(a%j==0)sum+=j;
        }
        return sum;
    }
    int main()
    {
        cin>>n;
        V=n;
        for(int i=1;i<=n;i++)
        {
            w[i]=i;
            v[i]=k(i);
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=V;j++)
        {
            if(w[i]>j)dp[i][j]=dp[i-1][j];
            else dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
        }
        cout<<dp[n][V];
        return 0;
    } 
    
    
  • waiting中

  • #include<bits/stdc++.h>
    using namespace std;
    const int N=1005; 
    int n,V,w[N],v[N];
    int dp[1005];
    int pdss(int a)
    {
        int sum=0;
        for(int j=1;j<a;j++)
            if(a%j==0)
                sum+=j;
        return sum;
    }
    
    int main()
    {
        cin>>n;
        V=n;
        for(int i=1;i<=n;i++)
        {
            w[i]=i;
            v[i]=pdss(i);
        }
        for(int i=1;i<=n;i++)
            for(int j=V;j>=w[i];j--)
                dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
        cout<<dp[V];
        return 0;
    }
    
    
  • 1

信息

ID
1678
难度
5
分类
(无)
标签
递交数
78
已通过
27
通过率
35%
被复制
4
上传者