zoukankan      html  css  js  c++  java
  • UVALive 4870 Roller Coaster 01背包

    H - Roller Coaster
    Time Limit:4500MS     Memory Limit:0KB     64bit IO Format:%lld & %llu

    Description

    Download as PDF

    Bessie has gone on a trip, and she's riding a roller coaster! Bessie really likes riding the roller coaster, but unfortunately she often gets dizzy.

    The roller coaster has a number of distinct sections that Bessie rides in order. At the beginning of the ride, Bessie's dizziness and fun levels are both at 0. For each section of the roller coaster, Bessie can either keep her eyes open or keep them closed (and must keep them that way for the whole section). If she keeps her eyes open for a section, her total fun increases by a Fun factor for that section, and her dizziness increases by a Dizziness factor for that section. However, if she keeps her eyes closed for the section, her total fun will not change, but her dizziness will decrease by a value that's constant for the entire roller coaster. (Note that her dizziness can never go below 0.)

    If, at any point, Bessie's dizziness is above a certain limit, Bessie will get sick. Write a program to find the maximum amount of fun Bessie can have without getting sick.

    Input

    There will be several test cases in the input. Each test case will begin with a line with three integers:


    N K L


    Where N(1$ le$N$ le$1, 000) is the number of sections in this particular roller coaster, K(1$ le$K$ le$500) is the amount that Bessie's dizziness level will go down if she keeps her eyes closed on any section of the ride, and L(1$ le$L$ le$300, 000) is the limit of dizziness that Bessie can tolerate - if her dizziness ever becomes larger than L, Bessie will get sick, and that's not fun!

    Each of the next N lines will describe a section of the roller coaster, and will have two integers:


    F D


    Where F(1$ le$F$ le$20) is the increase to Bessie's total fun that she'll get if she keeps her eyes open on that section, and D(1$ le$D$ le$500) is the increase to her dizziness level if she keeps her eyes open on that section. The sections will be listed in order. The input will end with a line with three 0s.

    Output

    For each test case, output a single integer, representing the maximum amount of fun Bessie can have on that roller coaster without exceeding her dizziness limit. Print each integer on its own line with no spaces. Do not print any blank lines between answers.

    Sample Input

    3 1 2 
    2 1 
    3 1 
    5 2 
    10 5 1 
    20 2 
    12 4 
    3 3 
    10 6 
    20 3 
    19 9 
    19 7 
    1 500 
    15 5 
    4 2 
    0 0 0
    

    Sample Output

    7 
    0

    #include <bits/stdc++.h>
    using namespace std;
    #define MAXN 1010
    int dp[20*MAXN];
    int v[MAXN],w[MAXN];
    int main()
    {
        int n,k,l;
        while(scanf("%d",&n),n)
        {
            scanf("%d%d",&k,&l);
            for(int i=0;i<n;i++)
                scanf("%d%d",&v[i],&w[i]);
            for(int i=0;i<=20*n+99;i++)
                dp[i]=99999999;
            dp[0]=0;
            for(int i=0;i<n;i++)
            {
                for(int j=n*20;j>=0;j--)
                {
                    if(dp[j]-k<0)dp[j]=0;
                    else dp[j]-=k;
                    if(j-v[i]>=0)
                    {
                        if(dp[j-v[i]]+w[i]<=l)
                            dp[j]=min(dp[j-v[i]]+w[i],dp[j]);
                    }
                }
            }
            int ans;
            for(int i=0;i<=n*20;i++)
                if(dp[i]<=l)
                    ans=i;
            cout<<ans<<endl;
        }
    }
  • 相关阅读:
    [书籍精读]《JavaScript异步编程》精读笔记分享
    [技术翻译]在现代JavaScript中编写异步任务
    [技术翻译]Web网页内容是如何影响电池使用寿命的?
    [技术翻译]使用Nuxt生成静态网站
    [Vue源码]一起来学Vue模板编译原理(二)-AST生成Render字符串
    [Vue源码]一起来学Vue双向绑定原理-数据劫持和发布订阅
    [Vue源码]一起来学Vue模板编译原理(一)-Template生成AST
    [技术翻译]您应该知道的13个有用的JavaScript数组技巧
    css清除默认样式
    [小技巧]让你的GridView支持IQueryable,并自动实现真分页
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4238214.html
Copyright © 2011-2022 走看看