分享下第三题思路,数据范围不大,可以三重循环dp,阴属性处理成负值,阳属性正值,然后用vector<unordered_map<int,int>> dp就可以表示负值,dp[i][j]表示总共用i个草药合成阴阳值为j的丹药的最小价值,dp[0][0]初始化0。三重循环,第一重用第i个草药更新dp,第二重取0到(K-1)的dp哈希表,第三重用迭代器遍历哈希表里的值,如果dp[j][k]存在那dp[j+1][k+yinyang[i]]=min(dp[j+1][k+yinyang[i]],dp[j][k]+val[i]),第二维从K-1反向遍历到0可以防止重复用同一个草药。最后看dp[1-K][Y]是否存在,从1-K里面选一个最小值

相关推荐

11-08 16:53
门头沟学院 C++
投票
滑模小马达:第三个如果是qfqc感觉还行,我签的qfkj搞电机的,违约金也很高,但公司感觉还可以,听说之前开过一个试用转正的应届生,仅供参考。
点赞 评论 收藏
分享
10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
牛客网
牛客企业服务