zoukankan      html  css  js  c++  java
  • 采药

    P1048 采药

     题目描述

    辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”

    如果你是辰辰,你能完成这个任务吗?

    输入输出格式

    输入格式:

    第一行有222个整数T(1≤T≤1000)T(1 le T le 1000)T(1T1000)和M(1≤M≤100)M(1 le M le 100)M(1M100),用一个空格隔开,TTT代表总共能够用来采药的时间,MMM代表山洞里的草药的数目。
    接下来的MMM行每行包括两个在111到100100100之间(包括111和100100100)的整数,分别表示采摘某株草药的时间和这株草药的价值。

    输出格式:

    111个整数,表示在规定的时间内可以采到的草药的最大总价值。

    输入输出样例

    输入样例#1: 
    70 3
    71 100
    69 1
    1 2
    
    输出样例#1: 
    3

    说明

    对于30%的数据,M≤10M le 10M10;

    对于全部的数据,M≤100M le 100M100。

    NOIP2005普及组第三题

    思路:01背包入门题,套模板即可

    直接看代码

    #include<bits/stdc++.h>
    using namespace std;
    int main() {
        int time,num;
        int single_time[1001],price[1001],f[100001]= {0};
        int i,j;
        cin>>time>>num;
        for(i=1; i<=num; i++)
            cin>>single_time[i]>>price[i];//输入草药的采摘时间与价值
        for(i=1; i<=num; i++) { //每个草药依次进行比较
            for(j=time; j>=single_time[i]; j--) { //从现有时间开始,直至当前花费时间为止
                if(f[j]<f[j-single_time[i]]+price[i])
                    f[j]=f[j-single_time[i]]+price[i];//令当前时间获取的价值=未获取草药时间的价值+草药的价值
            }
        }
        cout<<f[time]<<endl;//输出最大价值
        return 0;
    }

    下节继续讲背包
    (难一点的)

  • 相关阅读:
    [APM] OneAPM 云监控部署与试用体验
    Elastic Stack 安装
    xBIM 综合使用案例与 ASP.NET MVC 集成(一)
    JQuery DataTables Selected Row
    力导向图Demo
    WPF ViewModelLocator
    Syncfusion SfDataGrid 导出Excel
    HTML Table to Json
    .net core 2.0 虚拟目录下载 Android Apk 等文件
    在BootStrap的modal中使用Select2
  • 原文地址:https://www.cnblogs.com/kevin6666/p/10940293.html
Copyright © 2011-2022 走看看