题解 | 【模板】完全背包

【模板】完全背包

https://www.nowcoder.com/practice/237ae40ea1e84d8980c1d5666d1c53bc

#牛客春招刷题训练营# + 链接

这题和01背包的区别主要再可以重复拿去,思路见注释↓

#include <climits>
#include <iostream>
#include <vector>
#define ll long long
#define pre(i, j, k) for(ll i = j; i < k; i++)
using namespace std;

我的快读第二个重载可以看看

/*rd*/template<typename T> inline void rd(T& bbv_value){char bbv_c = getchar();bbv_value = 0; while(bbv_c < '0' || bbv_c > '9'){bbv_c = getchar();}while(bbv_c <= '9' && bbv_c >= '0'){bbv_value = (bbv_value << 3)+(bbv_value << 1)+(bbv_c&15);bbv_c = getchar();}}/*第二个重载在这里*/template<typename T1, typename T2, typename ...Args> inline void rd(T1& bbv_1, T2& bbv_2, Args&... arg){rd(bbv_1); rd(bbv_2, arg...);}
int main() {
  int n, v;
  rd(n, v);
  vector<int> matter(n + 1), worthiness(n + 1);
  pre(i, 1, n+1) rd(matter[i], worthiness[i]);
  vector<int> dp(v + 1, 0), pro_two(v + 1, INT_MIN);
  pro_two[0] = 0;
  pre(i, 1, n + 1){
    pre(j, matter[i], v+1){//---------把循环正序,使得dp[i]在之前已经判断过是否要拿物体i的状态(dp[j - matter[i]])的基础上再次判断拿不拿物体i
      dp[j] = max(dp[j], dp[j - matter[i]] + worthiness[i]);
      pro_two[j] = max(pro_two[j], pro_two[j - matter[i]] + worthiness[i]);
    }
  }
  int pro_one_ans = 0;
  pre(i, 0, v + 1){
    pro_one_ans = max(pro_one_ans, dp[i]);
  }
  cout << pro_one_ans << endl;
  if (pro_two[v] < 0) cout << 0;
  else cout << pro_two[v];
}
// 64 位输出请用 printf("%lld")

#写题解领奖励##牛客春招刷题训练营#
全部评论

相关推荐

面试官全程关摄像头1.自我介绍一下2.React和Vue哪个更熟悉一点3.你在之前那段实习经历中有没有什么技术性的突破(我只是实习了44天工作28天,我把我能说的都说了)4.你封装的哪个表单组件支不支持动态传值5.自己在实习阶段Vue3项目封装过hook吗6.hook有什么作用7.Vue2和Vue3的响应式区别(我说一个是proxy是拦截所有的底层操作,Object.defineProperty本身就是一个底层操作,有些东西拦截不了,比如数组的一些操作还有等等,面试官就说实在要拦截能不能拦截????我心想肯定不行呀,他的底层机制就不允许吧)8.pinia和vuex的区别(这个回答不出来是我太久没用了)9.pinia和zustand的区别,怎么选(直接给我干懵了)(我说react能用pinia吗&nbsp;&nbsp;他说要用的话也可以)10.渲染一万条数据,怎么解决页面卡顿问题(我说分页、监听滚轮动态加载,纯数据展示好像还可以用canvas画)(估计是没说虚拟表单,感觉不满意)11.type和interface的区别12.ts的泛型有哪些作用(我就说了一个结构相同但是类型不同的时候可以用,比如请求响应的接口,每次的data不同,这里能用一个泛型,他问我还有什么)13.你项目用的是React,如果让你再写一遍你会选择什么14.pnpm、npm、yarn的区别15.dependencies和devdependencies的区别总而言之太久没面试了,上一段实习的面试js问了很多。结果这次js一点没问,网络方面也没考,表现得很一般,但是知道自己的问题了&nbsp;&nbsp;好好准备,等待明天的影石360和周四的腾讯了&nbsp;&nbsp;加油!!!
解zj:大三的第一段面试居然是这样的结局
查看15道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务