多重部分和问题
来源:互联网 发布:潘石屹 三段婚姻 知乎 编辑:程序博客网 时间:2024/05/29 17:48
n中不同大小的数字ai,每种各mi个。判断是否可以从这些数字之中选出若干使他们的大小恰好为K.
限制条件
1<=n<=100
1<=ai,mi<=100000
1<=k<=100000
输入
多组数据。
第一行n。第二行不同的数字ai.第三行对应数字拥有的个数
输出
能挑选若干恰好和为K则输出“Yes”,反之输出“No”.
样例输入
1
3
3 5 8
3 2 2
17
样例输出
限制条件
1<=n<=100
1<=ai,mi<=100000
1<=k<=100000
输入
多组数据。
第一行n。第二行不同的数字ai.第三行对应数字拥有的个数
输出
能挑选若干恰好和为K则输出“Yes”,反之输出“No”.
样例输入
1
3
3 5 8
3 2 2
17
样例输出
Yes
背包问题的转化,重点还是01背包公式的用法
#include <stdio.h>#include <string.h>#define max(a,b) a>b?a:bint main(){int t;scanf("%d",&t);while(t--){int a[105],m[105],k,n,i,j;int dp[10005];memset(dp,-0x3f,sizeof(dp));dp[0]=0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n;i++){scanf("%d",&m[i]);}scanf("%d",&k);for(i=0;i<n;i++){for(int v=0;v<m[i];v++){for(j=k;j>=a[i];j--){dp[j]=max(dp[j],dp[j-a[i]]+a[i]);}}if(dp[k]==k){printf("Yes\n");break;}}if(i==n){printf("No\n");}} return 0;}
0 0
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题
- 多重部分和问题 DP
- 多重部分和问题 dp
- [dp]多重部分和问题
- 挑战 多重部分和问题
- 多重部分和问题优化
- 多重部分和问题 dfs
- 部分和问题---多重部分和问题---动态规划
- 经典DP 多重部分和问题
- CentOS 7.2 安装PostgreSQL 9.5.2
- android shape的使用
- 支持向量机系列三:Kernel
- 将DPDK移植到snort上的DAQ
- 开发应该做好自测
- 多重部分和问题
- 对CompletionService封装,实现快速处理业务任务并汇总结果
- 支持向量机系列四:Outliers
- 单调递增最长子序列
- MongoDB权限管理之用户名和密码的操作
- 结构体内存对齐的补充说明与总结
- HDU 5795 A Simple Nim SG函数打表找规律
- 支持向量机系列五:Numerical Optimization
- MongoDB增加用户认证: 增加用户、删除用户、修改用户密码、读写权限、只读权限