题目链接:

pid=5527">http://acm.hdu.edu.cn/showproblem.php?pid=5527

题意&题解:

感觉自己真是弱啊,自己想的贪心是错的,根本没想到20,50的特判,╮(╯▽╰)╭

附我參考的聚聚的题解:

http://blog.csdn.net/snowy_smile/article/details/49592521

代码:

(差点儿和那位聚聚的一样。ORZ)

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
int val[11]={0,1,5,10,20,50,100,200,500,1000,2000};
int x,T,p,num[11],vis[11],use[11];
int ans=-1;
long long sum;
int solve()
{
memset(use,0,sizeof(use));
if (vis[5]>num[5] || vis[8]>num[8]) return 0;
long long tmp=vis[5]*val[5]+vis[8]*val[8];
int tmpn=vis[5]+vis[8];
for (int i=1;i<=10;i++)
{
if (vis[i]==-1)
{
tmp+=num[i]*val[i];
tmpn+=num[i];
use[i]=num[i];
}
else
{
use[i]=num[i]-vis[i];
if (use[i]%2==1) use[i]--;
tmpn+=use[i];
tmp+=use[i]*val[i];
}
if (tmp>=x)
{
long long chao=tmp-x;
for (int j=i;j>=1;j--)
{
if (vis[j]==-1)
{
long long tui=min((long long)use[j],chao/val[j]);
tmpn-=tui;
chao-=tui*val[j];
}
else
{
long long tui=min((long long)use[j],chao/val[j]);
if (tui%2==1) tui--;
tmpn-=tui;
chao-=tui*val[j];
}
if (chao==0)
{
ans=max(ans,tmpn);
return 0;
}
}
return 0;
}
}
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&x);
memset(vis,-1,sizeof(vis));
for (int i=1;i<=10;i++)
{
scanf("%d",&num[i]);
sum+=num[i]*val[i];
}
if (sum<x)
{
printf("-1\n");
continue;
}
ans=-1;
vis[5]=0,vis[8]=0; solve();
vis[5]=1,vis[8]=1; solve();
vis[5]=1,vis[8]=0; solve();
vis[5]=0,vis[8]=1; solve();
printf("%d\n",ans);
}
}

【hdu5527】【2015ACM/ICPC亚洲区长春站 】Too Rich的更多相关文章

  1. 2015ACM/ICPC亚洲区长春站 A hdu 5527 Too Rich

    Too Rich Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  2. 2015ACM/ICPC亚洲区长春站 L hdu 5538 House Building

    House Building Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) ...

  3. 2015ACM/ICPC亚洲区长春站 J hdu 5536 Chip Factory

    Chip Factory Time Limit: 18000/9000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)T ...

  4. 2015ACM/ICPC亚洲区长春站 H hdu 5534 Partial Tree

    Partial Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)To ...

  5. 2015ACM/ICPC亚洲区长春站 G hdu 5533 Dancing Stars on Me

    Dancing Stars on Me Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Ot ...

  6. 2015ACM/ICPC亚洲区长春站 F hdu 5533 Almost Sorted Array

    Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Ot ...

  7. 2015ACM/ICPC亚洲区长春站 E hdu 5531 Rebuild

    Rebuild Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total S ...

  8. 2015ACM/ICPC亚洲区长春站 B hdu 5528 Count a * b

    Count a * b Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Tot ...

  9. 2015ACM/ICPC亚洲区长春站

    5532 Almost Sorted Array 题目大意:给你一个序列,如果它拿掉其中一个数后,可以是该序列成为非递减或非递增序列,则输出YES. 有两种思路,第一种代码比较简单,是LIS,复杂度n ...

随机推荐

  1. 12、UVC&V4L2的关系

    UVC是一种usb视频设备驱动.用来支持usb视频设备,凡是usb接口的摄像头都能够支持 V4L2是Linux下的视频采集框架.用来统一接口,向应用层提供API UVC: USB video clas ...

  2. IDLE的自动补全功能

    IDLE的自动补全功能位于:Edit→Show Completions,但每次需要补全的时候都需要点击一次,虽然IDLE提供了一个快捷键(Ctrl + Space),但实测无效.具体操作如下图

  3. iframe自适应高度解决方法 .

    <div id="leftBar"> <iframe name="tag" src="_iframe.html" styl ...

  4. 【Material Design视觉设计语言】应用样式设计

    作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.co ...

  5. lighttpd启动不了,libssl.so.4&amp;libcrypto.so.4 缺失

    lighttd的出错日志在 log/out_lighttpd 里,当lighttd启动不了时候,这里文件中会说明原因. 今天的报错是 error while loading shared librar ...

  6. stm32与arm7比较(经典)

    http://wenku.baidu.com/link?url=LIVcT1AQL0IgVF1xan5Zy9rXarCBo66hj7OXSxM1ap7FpssO4c3sd1pZd8azfBPr3PBy ...

  7. 简约之美jodd--props属性使用

    Prop是一个超级properties:包含了很多jdk缺失的东西:utf-8支持,宏,分区,profiles,全配置等等. 属性存储在一个或者多个*.props文件,而且它是开放的,支持多种类型的资 ...

  8. STS清理

    图中插入代码如下,文件名随意最好见名知意 Add 'this' qualifier to unqualified field accesses Add 'this' qualifier to unqu ...

  9. Linux桌面新彩虹-Fedora 14 炫酷应用新体验

    Linux桌面新彩虹 --Fedora 14 炫酷应用新体验 650) this.width=650;" hspace="12" align="left&quo ...

  10. 百度地图API 添加标签

    1.手动创建数据,实际项目则是接受GPS信息 /建立坐标点: // lng:经度 lat:纬度 var points = [ {"lng":112.58,"lat&quo ...