数组中的组合问题
来源:互联网 发布:lca类似算法 编辑:程序博客网 时间:2024/06/08 18:16
题目描述:
给出n(0<n<=100000)个数,其中任意两个数a,b(0<=a,b<10^9),必然会出现a整除b或者b整除a,给出m(0<m<=100000)个查询,每个查询给出一个p(0<p<10^9),问n个数里是否可以组合出一个子集,和为p
输入:
第一行输入n,m
第二行输入n个数,范围为[0,10^9]
随后m行每行输入一个p
输出:
输出存在满足要求的子集的查询个数
样例输入
5 2
4 2 2 4 4
8
9
样例输出
1
#include <iostream>#include <vector>#include <queue>#include <algorithm>#include <string>#include <cmath>#include <list>#include <map>using namespace std;int main(){unsigned n,m,num,temp;cin>>n>>m;map<unsigned,unsigned>imap;unsigned min = 10e9 , count = 0;map<unsigned, unsigned>::iterator p;for (unsigned i = 0 ; i < n ; ++ i){cin>>temp;if (imap.find(temp) != imap.end()){++imap.find(temp)->second;}else{imap.insert(pair<unsigned,unsigned>(temp,1));}min = min < temp ? min : temp;}while (m>0){cin>>num;if (num % min == 0){for(map<unsigned, unsigned>::reverse_iterator iter = imap.rbegin();iter!=imap.rend();++ iter){if (num >= iter->first * iter->second){num -= iter->first * iter->second;}else{num -= (num / iter->first)*iter->first;}}if (num == 0){++count;}}--m;}cout<<count;system("pause");return 0;}
阅读全文
2 0
- 数组中的组合问题
- 数组组合问题
- 有序数组的组合问题
- 整数数组的组合问题
- 数组元素组合问题分析
- 蓝桥杯中的砝码组合问题
- 列出数组中的全部的数字组合
- 关于任一数组的组合问题
- 多个数组全组合的问题
- 数组中的跳跃问题
- 数组中的平衡点问题
- 数组中的排序问题
- Myeclipse 中的提示组合键问题
- java-组合接口中的名字冲突问题
- Java中的全排练和组合问题
- 组合数组
- 数组组合
- 2个元素的组合匹配二维数组中的数据
- 在javascript中==和===的区别
- dtree例子
- https请求样例
- 一致性哈希算法原理
- 配置OpenCV3.2.0和ViSP3.0.1于VS2015 Community
- 数组中的组合问题
- 微服务架构的优势与不足
- 简单排序算法(kotlin实现)
- echarts(三)折线柱状图
- 16
- 加密解密算法java实现(6)—RSA 分段加解密的例子
- HTML常用的标签
- mac下使用secureCRT
- 用Python和Pygame写游戏-从入门到精通(1)