acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 题解

    userId_undefined

    法兰西玫瑰

    倔强青铜
    30阅读
    6回复
    0点赞
  • ...

    #include<iostream> using namespace std; int w[100005] , c[100005]; int dp[100005]; int main(){ int m , n; cin >> m >> n; for(int i = 1;i <= n;i++){ cin >> c[i] >> w[i]; } for(int i = 1;i <= n;i++){ for(int j = 0;j <= m;j++){ if(j >= w[i]) dp[j]=max(dp[j] , dp[j-w[i]] + c[i]); } } cout << dp[m]; return 0; }

    userId_undefined

    DARK SPECTRE

    倔强青铜
    9阅读
    0回复
    1点赞
  • 简单完全背包

    #include<bits/stdc++.h> using namespace std; const int M=10001,N=10001; int m,n,w[N],c[N],f[M]; int main() { scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) scanf("%d%d",&c[i],&w[i]); for(int i=1;i<=n;i++) for(int v=w[i];v<=m;v++) f[v]=max(f[v],f[v-w[i]]+c[i]); printf("%d\n",f[m]); }

    userId_undefined

    复仇者_林克━╋══⁕═➢™

    荣耀黄金
    4阅读
    0回复
    0点赞
首页