【hdu5527】【2015ACM/ICPC亚洲区长春站 】Too Rich
题目链接:  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的更多相关文章
- 2015ACM/ICPC亚洲区长春站 A hdu 5527 Too Rich
		
Too Rich Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
 - 2015ACM/ICPC亚洲区长春站 L hdu 5538 House Building
		
House Building Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
 - 2015ACM/ICPC亚洲区长春站 J hdu 5536 Chip Factory
		
Chip Factory Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...
 - 2015ACM/ICPC亚洲区长春站 H hdu 5534 Partial Tree
		
Partial Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)To ...
 - 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 ...
 - 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 ...
 - 2015ACM/ICPC亚洲区长春站 E hdu 5531 Rebuild
		
Rebuild Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total S ...
 - 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 ...
 - 2015ACM/ICPC亚洲区长春站
		
5532 Almost Sorted Array 题目大意:给你一个序列,如果它拿掉其中一个数后,可以是该序列成为非递减或非递增序列,则输出YES. 有两种思路,第一种代码比较简单,是LIS,复杂度n ...
 
随机推荐
- Linux硬件信息查看
			
more /proc/cpuinfo more /proc/meminfo more /proc/*info lspci 查看主板信息等cat /proc/cpuinfo CPU信息cat /proc ...
 - 今日SGU 5.3
			
SGU 107 题意:输入一个N,表示N位数字里面有多少个的平方数的结尾9位是987654321 收获:打表,你发现相同位数的数相乘结果的最后几位,就和那两个相乘的数最后几位相乘一样,比如3416*8 ...
 - 删除D盘空目录 、检索大于10M的文件
			
删除D盘空目录 @echo off for %%i in (d:\xx) do ( if exist %%i:\ ( for /f "delims=" %%a in ('dir / ...
 - js30--代理模式
			
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
 - js---15,模拟数组的ecah方法
			
原型的另外一个作用就是扩展对象中的属性和方法的 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http:// ...
 - system.setting-全局变量数据监听
			
今天在setting里添加了一个新的变量,想要实现对这个变量的监听.现在记录下方法 首先就是明白一点,我们在system.setting里添加的变量,都会被保存在data/data/com.andro ...
 - JavaScript--Module模式
			
//module: Module模式是JavaScript编程中一个非常通用的模式 window.onload = function() { //1.基本使用: var MyFn = function ...
 - IDFA和IMEI
			
这里有一些解释: https://www.zhihu.com/question/38856446
 - C语言速度优化之指针赋值与if推断
			
近期在写的一个项目须要优化处理速度,我写了一下程序来測试指针赋值与指针推断的速度比較.结果让我大吃一惊. #include <stdio.h> #include <stdlib.h& ...
 - <%%>创建内联代码块(表达式)
			
其实<%%>很早之前就见过了,只是会用一点功能,其它的不甚了解.今天偶尔见到了它的庐山真面目,现在共享给大家. 语法 代码块呈现(<%%>)定义了当呈现页时执行的内联代码或内联 ...