codeforce The Art of Dealing with ATM
题目大意
ATM取款机有n种不同的钱币kind[i],每次取款允许吐出不超过k张钱币,且钱币的种类数不能超过2(一开始没理解2的意思),现在有q次取款,钱数为ques,问ATM能否凑出这样的钱,若能的话吐出的钱币数最少是多少。
n <= 5000, k <= 20, q <= 20, kind[i] <= 10 ^ 7, ques <= 2 * 10 ^ 8。
题解:
用两种钱找零可以写成a * x + b * y = ques,其中x和y是两种钱币、a和b是两种钱币分别用的钱数、ques是所需凑出的钱数,则最优的解法是枚举x, a, b,判断y是否在钱的种类中,主要x或者y可以为0;
一开始想的用搜索,果断试了一下,果然超时;
#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
#define maxn 1001
#define INF ~0u >> 1
using namespace std;
int n,k,vist[10000004],kind[6000];
int ans;
int main()
{
int q,ques;
scanf("%d %d",&n,&k);
memset(vist,0,sizeof(vist));
for(int i=1; i<=n; i++)
{
scanf("%d",&kind[i]);
vist[kind[i]]=1;
}
scanf("%d",&q);
for(int ii=1; ii<=q; ii++)
{
scanf("%d",&ques);
ans=INF;
for(int i=0; i<=k; i++)
{
for(int j=0; j+i<=k; j++)
{
for(int t=1; t<=n; t++)
{
if(j==0)
{
if(kind[t]*i==ques)
ans=min(ans,i);
}
else
{
int b=(ques-kind[t]*i)/j;
if(b>0&&b<=10000000&&vist[b]&&kind[t]*i+b*j==ques)
ans=min(ans,i+j);
}
}
}
}
if(ans==INF)
printf("-1\n");
else
printf("%d\n",ans);
}
return 0;
}
codeforce The Art of Dealing with ATM的更多相关文章
- Codeforces Round VK Cup 2015 - Round 1 (unofficial online mirror, Div. 1 only)E. The Art of Dealing with ATM 暴力出奇迹!
VK Cup 2015 - Round 1 (unofficial online mirror, Div. 1 only)E. The Art of Dealing with ATM Time Lim ...
- cf524C The Art of Dealing with ATM
ATMs of a well-known bank of a small country are arranged so that they can not give any amount of mo ...
- CodeForces 524C The Art of Dealing with ATM (二分)
题意:给定 n 种不同的钞票,然后用q个询问,问你用最多k张,最多两种不同的钞票能不能组成一个值. 析:首先如果要求的值小点,就可以用DP,但是太大了,所以我们考虑一共最多有n * k种钞票,如果每次 ...
- Codeforces 524C.The Art of Dealing with ATM(暴力)
我先采用了智障解法(n * n枚举...刚开始把n看成1000了还以为能过) 理所当然的t了,不过我怀疑优化一下能过?(感觉数据不太行的亚子 然后就是O(n * k * k)的解法,看到好多人快乐二分 ...
- [转] Loren on the Art of MATLAB
http://blogs.mathworks.com/loren/2007/03/01/creating-sparse-finite-element-matrices-in-matlab/ Loren ...
- 1179: [Apio2009]Atm
1179: [Apio2009]Atm Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 1629 Solved: 615[Submit][Status ...
- The Art of Deception
前言 一些黑客毁坏别人的文件甚至整个硬盘,他们被称为电脑狂人(crackers)或计算机破坏者(vandals).另一些新手省去学习技术的麻烦,直接下载黑客工具侵入别人的计算机,这些人被称为脚本小子( ...
- 设计模式(十二):通过ATM取款机来认识“状态模式”(State Pattern)
说到状态模式,如果你看过之前发布的重构系列的文章中的<代码重构(六):代码重构完整案例>这篇博客的话,那么你应该对“状态模式”并不陌生,因为我们之前使用到了状态模式进行重构.上一篇博客我们 ...
- How the problem solved about " Dealing with non-fast-forward errors"
Recently ,I got confused When I use git to push one of my project. The problem is below: And I Foun ...
随机推荐
- 使用SMSManager短信管理器发送短信
import android.os.Bundle;import android.app.Activity;import android.app.PendingIntent;import android ...
- DQL查询语句内容整理
select * from t_hq_ryxx; select bianh,xingm from t_hq_ryxx; --为字段名定义别名 select bianh as 编号,xingm as 姓 ...
- 神奇的Noip模拟试题第一试 合理种植 枚举+技巧
1.合理种植 (plant.pas/.c/.cpp) [问题描述] 大COS在氯铯石料场干了半年,受尽了劳苦,终于决定辞职.他来到表弟小cos的寒树中学,找到方克顺校长,希望寻个活干. 于是他如愿以偿 ...
- K2 BPM+Microsoft Dynamics CRM,妥妥的~
啊~~~~七夕 ▼ 你比巴西少一xi 你比山西多四xi 对有情人来说今天就是情人节,对单身汪来说,今天就是个星期四. but,软件也是要秀恩爱的! ♥ 晒晒我家亲爱的CRM,它的全名叫Microsof ...
- Tasklist and TaskKill
C:\Users\Administrator>tasklist /? TASKLIST [/S system [/U username [/P [password]]]] [/M ...
- SharePoint表单和工作流 - Nintex篇(四)
博客地址 http://blog.csdn.net/foxdave 接上篇点击打开链接 "Manage workflow constants" 管理工作流常量.这里可以管理工作流中 ...
- 统计一段文字中出现频率最高的10个单词(c语言)
注:这次使用C语言做的这个程序.个别不懂的地方和算法部分是请教的其他同学,交流并吸收,所以收获颇多! 在程序中每一个地方我都做了注释,方便同学之间交流.也让老师容易看.程序也有很多不足的地方,但限于本 ...
- Hibernate xml格式和anno格式 mappedby
xml配置的时候多对一 一对多的外键可以配置一样,但是anno不太好弄,多这边配完了,一那边用个mappedby"“自己在对方的属性”就可以,不然要建一张中间表.xml的mappedby因为 ...
- c#图像处理入门(-bitmap类和图像像素值获取方法) 转
一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetP ...
- zookeeper3.4.6的安装
最近为了解决HDFS的单点故障的问题,采用了HA的方式是实现,并通过zookeeper来实现自动切换,既然需自动切换的话,那么必须要安装zookeeper,我选用的版本是3.4.6.下面详细介绍一下其 ...