专题三 Problem T

原创 2016年05月31日 21:32:14
一、题目编号:
          1020
二、简单题意:
       某天HiBix打开钱包发现钱包有一些钱,他决定用这些钱去附近的商店买一块表。他想付刚刚好的钱,并且他知道表的价格在n到m之间,但是他不知道确切的价格。已知n,m治病的种类以及张树,求他支付1到m之间的钱数有多少种情况。
三、解题思路形成过程
       和完全背包问题很类似。刚开始虽然结果对了,但是一直超时,最后参考了别人的代码,优化才AC了。
四、感想
        注意优化!优化!优化!
五、AC代码
#include<iostream>
#include<cstring>
using namespace std;
struct coin
{
    int a;
    int c;
};
int price[100001];
int main()
{
    int n,m,w,count;
    coin coins[101];
    while(cin>>n>>m&&(n!=0&&m!=0))
    {


        memset(price,0,sizeof(price));
        for(int i=0;i<n;i++)
        cin>>coins[i].a;
        for(int i=0;i<n;i++)
        cin>>coins[i].c;


        price[0] = 1;
        for(int i=0;i<n;i++)
        for(int j=0;j<coins[i].a;j++)
        {
            count=coins[i].c;
            for(int k=j+coins[i].a;k<=m;k+=coins[i].a)//
            if(price[k]==1)
            count=coins[i].c;
            else if(count>0&&price[k-coins[i].a]==1)
            {
                price[k] = 1;
                count--;
            }
        }
/*
        for(int i=0;i<n;i++)
        {
            int icount=1;
        while(icount<=coins[i].c)
        {
            w=coins[i].a*icount;
            price[w]=1;
            for(int j=i+1;j<n;j++)
            {
                int jcount=0;
                while(jcount<=coins[j].c)
                {
                    w+=coins[j].a;
                    if(w<=100000)
                    {
                        //cout<<w<<endl;
                        price[w]=1;
                    }
                    jcount++;
                }
            }
            icount++;
        }
        }
*/
        int num=0;
        for(int i=1;i<=m;i++)
        if(price[i]==1)
        num++;
        cout<<num<<endl;
    }
    return 0;
}

相关文章推荐

kuangbin——线段树专题 C - A Simple Problem with Integers

C - A Simple Problem with Integers Time Limit:5000MS     Memory Limit:131072KB     64bit IO Format:...

UVa 101 The Blocks Problem 数据结构专题

101 - The Blocks Problem 67864 19.16% 14194 题目链接: http://uva.onli...

SDAU 搜索专题 20 Prime Ring Problem

1:问题描述 Problem Description A ring is compose of n circles as shown in diagram. Put natural number ...

搜索专题(DFS)HDU 1016-Prime Ring Problem

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1016 思路分析: 首先看到数据范围不超过20,那就把40以内的素数打表存在数组里吧,然后确定搜索方...

ETL系列专题4——ETL之T

ETL系列专题4——ETL之T 转换(Transform),是ETL过程中最复杂的部分,ETL中E和L都非常容易理解,Extract从源系统中提取数据,Load将数据载入星型模型。而转换的过程涉及到...

集训队专题(1)1009 T9

T9 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Subm...

HDU 5687 Problem C

Problem Description 度熊手上有一本神奇的字典,你可以在它里面做如下三个操作:   1、insert : 往神奇字典中插入一个单词   2、delete: 在神奇字...

HDU 5689 Problem E

Problem Description 小度熊是一个尽职尽责的程序熊,每天产出数千行的代码,代码当中存在很多判断条件。度熊想让自己代码中的这些条件不存在交集。为了简化问题,一个条件可以是一个『简...

HDU 1241 Prime Ring Problem

#include #include #include #include #define maxn 25 #define inf 0x3f3f3f3f using namespace std; int ...

HDU 5445 Food Problem

Problem Description Few days before a game of orienteering, Bell came to a mathematician to solve...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:专题三 Problem T
举报原因:
原因补充:

(最多只允许输入30个字)