题意:有10,20,30,100四种硬币,每种数量无限,给定n个a[i],问能组成所有a[i]的硬币的最小总数量

n<=1e2,a[i]<=1e9

思路:

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<ll,ll> Pll;
typedef vector<int> VI;
typedef vector<PII> VII;
#define N 310000
#define M 4100000
#define fi first
#define se second
#define MP make_pair
#define pi acos(-1)
#define mem(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
#define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
#define lowbit(x) x&(-x)
#define Rand (rand()*(1<<16)+rand())
#define id(x) ((x)<=B?(x):m-n/(x)+1)
#define ls p<<1
#define rs p<<1|1 const ll MOD=1e9+,inv2=(MOD+)/;
double eps=1e-;
int INF=1e9;
int da[]={-,,,};
int db[]={,,-,}; int vis[][],a[N],b[],n; int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} int isok()
{
mem(vis,);
int m=b[]+b[]*+b[]*;
rep(i,,b[]) vis[][i]=;
rep(i,,b[])
rep(j,,m)
if(vis[][j]) vis[][j+i*]=;
rep(i,,b[])
rep(j,,m)
if(vis[][j]) vis[][j+i*]=;
int ans=;
rep(i,,n)
{
int t=INF;
rep(j,,m)
if(vis[][j]&&(a[i]-j*)%==) t=min(t,(a[i]-j*)/);
if(t==INF) return -;
ans=max(ans,t);
}
return ans;
} int main()
{
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout); int cas;
scanf("%d",&cas); while(cas--)
{
n=read();
rep(i,,n) a[i]=read(); int ans=INF;
for(b[]=;b[]<=;b[]++)
for(b[]=;b[]<=;b[]++)
for(b[]=;b[]<=;b[]++)
{
int t=isok();
if(t!=-) ans=min(ans,b[]+b[]+b[]+t);
} if(ans==INF) printf("-1\n");
else printf("%d\n",ans); } return ;
}

最新文章

  1. 本地测试AJAX请求
  2. 设计模式之Builder模式
  3. IOS 视图切换动画
  4. avconv转换视频
  5. Objective-C:KVC
  6. Android成长记(1)-----android环境搭建与adb shell 命令
  7. 基于Sql Server 2008的分布式数据库的实践(五)
  8. unix网络io模型
  9. UVa 481 - What Goes Up
  10. tesserat训练中文备忘录
  11. Linux下查看alert日志文件的两种方法
  12. 安装 Tesserocr (填坑)
  13. vi快速查找
  14. Python selenium + Firefox启动浏览器
  15. 比Python、Java更快的 Go 语言,能否称霸江湖?
  16. JS的分号可以省掉吗?
  17. 牛客网-《剑指offer》-二进制中1的个数
  18. BASIC-8_蓝桥杯_回文数
  19. Session的作用和使用场景
  20. cmder小技巧

热门文章

  1. 建立 Active Directory域 ----学习笔记
  2. TP5.1+Vue前后端分离实践
  3. AngularJS语法
  4. mysql常见的查询语句
  5. python学习笔记(7): 面向对象
  6. Python之路-条件控制&amp;循环语句&amp;列表推导式&amp;常用函数
  7. Node.JS-经典教程
  8. poj 2689 Prime Distance(区间筛选素数)
  9. uiautomatorviewer不能直接截取手机屏幕信息
  10. 【LeetCode】二分 binary_search(共58题)