Coins and Queries(codeforce 1003D)
Polycarp has nn coins, the value of the i-th coin is aiai . It is guaranteed that all the values are integer powers of 22 (i.e. ai=2dai=2d for some non-negative integer number dd ).
Polycarp wants to know answers on qq queries. The jj -th query is described as integer number bjbj . The answer to the query is the minimum number of coins that is necessary to obtain the value bjbj using some subset of coins (Polycarp can use only coins he has). If Polycarp can't obtain the value bjbj , the answer to the jj -th query is -1.
The queries are independent (the answer on the query doesn't affect Polycarp's coins).
Input
The first line of the input contains two integers nn and qq (1≤n,q≤2⋅1051≤n,q≤2⋅105 ) — the number of coins and the number of queries.
The second line of the input contains nn integers a1,a2,…,ana1,a2,…,an — values of coins (1≤ai≤2⋅1091≤ai≤2⋅109 ). It is guaranteed that all aiai are integer powers of 22 (i.e. ai=2dai=2d for some non-negative integer number dd ).
The next qq lines contain one integer each. The j -th line contains one integer bjbj — the value of the jj -th query (1≤bj≤1091≤bj≤109 ).
Output
Print qq integers ansjansj . The jj -th integer must be equal to the answer on the jj -th query. If Polycarp can't obtain the value bjbj the answer to the jj -th query is -1.
Example
5 4
2 4 8 2 4
8
5
14
10
1
-1
3
2
题解:有n个数,q次询问,对于要询问的数x,找出数组中能组成x的最小个数,若不能输出-1.这道题很明显是贪心,每一次从最大的值开始判断是否选择。由于数组中的每一个数都是2的幂,所以可以二进制优化的思想进行遍历判断,还需要使用
map容器进行一个映射,来判断当前值是否存在,然后再判断当前值与x的大小即可。
#include <iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<stack>
#include<queue>
#include<deque>
#include<map>
#include<algorithm>
#define PI acos(-1.0)
using namespace std;
typedef long long ll;
ll m,n,k;
int dp[];
map<int,int>::iterator it;
ll fac(ll x)
{
ll ans=;
for(ll i=;i<=x;i++)
{
ans*=;
}
return ans;
}
int main()
{
cin>>m>>n;
map<ll,ll>mp;
mp.clear();
ll i;
for(i=;i<m;i++)
{
ll p;
cin>>p;
mp[p]++;
}
int str[]={};
for(i=;i<=;i++)
{
str[i]=str[i-]*;
}
while(n--)
{
ll m,k,p,s;
cin>>m;
ll sum=,l=;
while(l>=)
{ k=str[l--];
if(mp.count(k)==)
continue;
p=min(mp[k],m/k);
sum+=p;
m-=p*k; }
if(m)
sum=-;
printf("%lld\n",sum);
}
return ;
}
Coins and Queries(codeforce 1003D)的更多相关文章
- CF1003D Coins and Queries 贪心
Coins and Queries time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- CF 1003D Coins and Queries【位运算/硬币值都为2的幂/贪心】
Polycarp has n coins, the value of the i-th coin is ai. It is guaranteed that all the values are int ...
- Codeforces Round #494 (Div. 3) D. Coins and Queries(贪心
题目链接 题目大意:给你n个物品,第iii个物品价值aia_iai,询问q次,问你能不能凑出价值为qiq_iqi的物品. 小贪心吧.从大到小找,能拿就拿就行了. #include<bits/ ...
- Coins and Queries(map迭代器+贪心)
题意 n个硬币,q次询问.第二行给你n个硬币的面值(保证都是2的次幂!).每次询问组成b块钱,最少需要多少个硬币? Example Input 5 42 4 8 2 4851410 Output 1- ...
- Codeforces Round #494 (Div. 3) D. Coins and Queries (贪心,数学)
题意:给你一组全是\(2^d\ (d\ge0)\)的数,询问q次,每次询问一个数,问这个数是否能够由原数组中的数相加得到,如果能,输出最少用多少个数,否则输出\(-1\). 题解:首先贪心得出结论:如 ...
- 7.24-Codeforces Round #494 (Div. 3)
链接:http://codeforces.com/contest/1003 A. Polycarp's Pockets 题型:模拟 题意:把初始集合拆分,要求相同的数不在同一个集合中,求出需要的集合个 ...
- codeforces1003D(贪心)
D. Coins and Queries time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- Codeforces Round #494 (Div 3) (A~E)
目录 Codeforces 1003 A.Polycarp's Pockets B.Binary String Constructing C.Intense Heat D.Coins and Quer ...
- ACM java写法入门
打2017icpc沈阳站的时候遇到了大数的运算,发现java与c++比起来真的很赖皮,竟然还有大数运算的函数,为了以后打比赛更快的写出大数的算法并且保证不错,特意在此写一篇博客, 记录java的大数运 ...
随机推荐
- OC-存档
Δ一. .plist文件 .plist文件是一个属性字典数组的一个文件: .plist文件可以用来存储:字典.数组.字符串等对象数据,可以混搭存储 [注]iOS开发中,plist文件一般用于app ...
- React typescript issue
多个输入框发生变化时,setState: this.setState({[e.target.name]: e.target.value} as componentState)
- New Concept English three (32)
26w/m 68 The salvage operation had been a complete failure. The small ship, Elkor, which had been se ...
- laravel5表单验证
学习laravel框架有一段时间了,觉得它自带的表单验证特别好用,和大家分享分享 对于一些验证规则手册上都有,相信大家看了就会,我简单的说下怎么使用自定义正则验证: 验证手机号:'tel' => ...
- android 删除SD卡或者手机的缓存图片和目录
public static final String TEMP_PHOTO_FILE_NAME = "temp_photo.jpg"; private static String ...
- Azure VM Scalable Sets -- 适用IAAS架构
1. 选择Virtual Machine scale set2. 选择resource manager(或创建最新)3. 基本信息配置4. 配置scale的参数(可伸缩的balance模型):VM最小 ...
- Python开发简单记事本
摘要: 本文是使用Python,结合Tkinter开发简单记事本. 本文的操作环境:ubuntu,Python2.7,采用的是Pycharm进行代码编辑,个人很喜欢它的代码自动补齐功能. 最近很想对p ...
- SpringMVC使用session实现简单登录
1.首先为了能直观地在jsp页面体现session的内容,我使用了jstl表达式,首先在pom.xml中引入jstl的依赖 <!-- jstl所需要的依赖 --> <dependen ...
- Eclipse环境搭建配置操作
1.选择window 2.设置字体 3.设置编码格式:国际编码:UTF-8 第一个地方设置编码格式 第二个地方设置编码格式:这个更重要些 4.配置26个英文小写字母. 作用:能够在开发时提示你,快速开 ...
- 十一、python沉淀之路--map函数、filter函数、reduce函数、匿名函数、内置函数
一.map函数 1.自定义函数,实现类似于map函数的功能 num_l = [1,3,4,5,6,9] def power(n): return n ** 2 def map_test(func,ar ...