Description
有n种不同大小的数字,每种各个。判断是否可以从这些数字之中选出若干使它们的和恰好为K。
Input
首先是一个正整数T(1<=T<=100)
接下来是T组数据
每组数据第一行是一个正整数n(1<=n<=100),表示有n种不同大小的数字
第二行是n个不同大小的正整数ai(1<=ai<=100000)
第三行是n个正整数mi(1<=mi<=100000),表示每种数字有mi个
第四行是一个正整数K(1<=K<=100000)
Output
对于每组数据,如果能从这些数字中选出若干使它们的和恰好为K,则输出“Yes”,否则输出“No”,每个输出单独占一行
Sample Input
2
3
3 5 8
3 2 2
17
2
1 2
1 1
4
Sample Output
Yes
No


题解:

15年省赛的一道题,题目没啥难度,看下数据范围多重背包可以跑,只需要看某个状态i是否可以达到用bool数组就行,二进制优化0ms。

代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define INF 0x3f3f3f3f
 4 #define M(a, b) memset(a, b, sizeof(a))
 5 const int N = 105;
 6 int a[N], num[N];
 7 bool f[100005];
 8
 9 int main() {
10     int T, n, k;
11     scanf("%d", &T);
12     while (T--) {
13         scanf("%d", &n);
14         for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
15         for (int i = 1; i <= n; ++i) scanf("%d", &num[i]);
16         scanf("%d", &k);
17         M(f, 0); f[0] = 1;
18         for (int i = 1; i <= n; ++i) {
19             int sum = num[i] * a[i];
20             if (sum >= k) {
21                 for (int j = a[i]; j <= k; ++j)
22                     if (f[j-a[i]]) f[j] = 1;
23             }
24             else {
25                 int m = num[i];
26                 for (int j = 1; j <= m; m-=j, j <<= 1) {
27                     int y = j*a[i];
28                     for (int x = k; x >= y; --x)
29                         if (f[x-y]) f[x] = 1;
30                 }
31                 int y = m*a[i];
32                 for (int x = k; x >= y; --x)
33                     if (f[x-y]) f[x] = 1;
34             }
35         }
36         if (f[k]) printf("Yes\n");
37         else printf("No\n");
38     }
39
40     return 0;
41 }

转载于:https://www.cnblogs.com/robin1998/p/6795741.html

AHU-743 多重部分和问题 【多重背包变种】相关推荐

  1. POJ 1742 Coins ( 经典多重部分和问题 DP || 多重背包 )

    题意 : 有 n 种面额的硬币,给出各种面额硬币的数量和和面额数,求最多能搭配出几种不超过 m 的金额? 分析 : 这题可用多重背包来解,但这里不讨论这种做法. 如果之前有接触过背包DP的可以自然想到 ...

  2. 多重背包问题与分组背包

    多重背包的含义: 物品数量不再是无穷多. 看题: 思路,既然物品个数有限,但还要判断要装几个,我们可以用暴力的做法,三重循环,每层循环控制自己的变量,容易理解.第三层循环就是控制装的物品的个数,我们通 ...

  3. AcWing 4. 多重背包问题(多重背包 朴素版)

    题目链接 https://www.acwing.com/problem/content/4/ 思路 对于每一个物品我们在选择的时候是有限制的,所以我们进行选择的时候需要枚举一下可以选择的情况,注意的是 ...

  4. 动态规划之多重部分和问题

    动态规划问题,我们这里定义dp[i][j]为bool类型,其意义表示为用前i种数(下标为0~i-1)能否凑成和j,能的话则dp[i][j]=true,反之则dp[i][j]=false,那么根据其前一 ...

  5. 我们来试着解答一下下面的题目(8)(DP/多重部分和)

    那么,我开动惹? 题在?62页 Solution 我一开始想的就是优化之前的,很好理解 优化之后就是:记录剩下的ai的个数 初始化dp数组(-1),dp[0]=[0] 先找到起点,使它等于mi 下一步 ...

  6. pandas 设置多重索引_Pandas多重索引使用详解

    多重索引被定义为非常重要的索引, 因为它处理数据分析和处理, 尤其是处理高维数据时.它还可以在Series和DataFrame等较低维度的数据结构中存储和处理任意数量的维度的数据. 它是标准索引对象的 ...

  7. 多重搜索算法_Android多重搜寻,例如传送,搜寻联络人

    多重搜索算法 In this tutorial, we'll discuss and implement a search feature that displays the matched resu ...

  8. 爆炸的符卡洋洋洒洒<每日一题>(01背包变种)

    题目: 题目链接:登录-专业IT笔试面试备考平台_牛客网 思路: 该题为01背包的变种问题 我们先来复习一下普通的01背包 dp[i][j]数组的含义: i代表了取前i个物品 j代表了背包的空间 数组 ...

  9. 计算机到多重网络,windows7多重网络无法连接到internet最佳解决方法

    我们在启动完win7系统之后,都是需要进行本地连接宽带之后才能够正常上网,然而在连接网络偶尔也会出现一些问题,例如有的用户就会出现多重网络无法连接到internet的情况,那么面对这种现象我们应该要怎 ...

  10. 计算机关闭多重网络协议,多重网络问题怎么解决?如何取消多重网络?

    你还在为多重网络怎么解决而苦恼吗,今天小编教你多重网络问题怎么解决,让你告别多重网络的烦恼. 方法/步骤 1.点击开始-控制面板 如图,点击开始-控制面板. 2.网络和Internet 如图,点击网络 ...

最新文章

  1. 报错解决:Failed to talk to init daemon.
  2. windows2008的功能介紹及其与2003的差异
  3. 以太坊在哪里买_DeFi只是以太坊的开胃小菜,以太坊2.0才是重头戏
  4. qq邮箱如何在win10邮箱连接到服务器,win10系统下邮箱怎么添加qq邮箱
  5. 提高(微)服务安全的非完全攻略
  6. 【细节实现题】LeetCode 57. Insert Interval
  7. ORA-04031错误分析和解决
  8. informix软件
  9. siamfc++自己学习笔记
  10. 4G模块Air720系列 android RIL驱动源码发布
  11. 学习笔记(五)——相关系数及Excel实现相关分析操作
  12. 2020-12-25 PMP 群内练习题 - 光环
  13. 百分点技术负责人:我们为什么需要大数据操作系统
  14. ps切图(6)——参考线及辅助
  15. Java第一次实习面试经历
  16. L1-6 福到了 (模拟)
  17. html静态网站基于游戏网站设计与实现共计10个页面 (仿地下城与勇士游戏网页)...
  18. pythonista 3 学习
  19. mac linux win三系统安装教程,macbookpro上安装三系统详解教程(macosxwindowslinuxubuntu).doc...
  20. 信息系统工程监理工作“四控三管一协调”

热门文章

  1. 元气骑士android替换存档教程,元气骑士游戏怎么将存档转移到另一个手机中
  2. Android桌面小插件——Widget
  3. 斯蒂文斯理工学院计算机科学硕士,斯蒂文斯理工学院计算机科学硕士
  4. 佐治亚理工计算机科学录取,早规划获佐治亚理工学院GaTech CS硕士录取
  5. mysql001课程成绩002,6、MySQL测试题
  6. 【python】画四叶草
  7. 浅谈大数据的过去、现在和未来
  8. OneFlow源码解析:静态图与运行时
  9. Android P如何去掉电池图标和固定电量显示
  10. [转]XXX无法访问。你可能没有权限使用网络资源