zoukankan      html  css  js  c++  java
  • 116. 张程易,编程易(01背包)

    2557 张程易,编程易

     

     时间限制: 2 s
     空间限制: 128000 KB
     题目等级 : 钻石 Diamond
    题目描述 Description

    张程易是一名神奇的魔法少女,在oier之中有着极高的地位。
    他的老师老王对他的程序水平赞叹不已,于是下决心培养这名小子。
    老王的训练方式很奇怪,他会一口气让张程易做很多道题,
    要求他在规定的时间完成。
    而老王为了让自己的威信提高,自己也会把这些题都做一遍。
    张程易和老王都有一个水平值,他们水平值的比值和做这些题
    所用时间的比值成反比。比如如果张程易的水平值是1,老王的水平值是2
    那么张程易做同一道题的时间就是老王的2倍。 
     
    每个题目有他所属的知识点,这我们都知道,
    比如递归,动归,最短路,网络流……
    在这里我们不考虑这些事情,我们只知道他们分别是知识点1,知识点2……
    每一个知识点有他对应的难度,比如动态规划经常难于模拟……
    而每一个同一知识点下的题目,对于张程易来讲,都是一样难的。
    而做出每一道题,老王都有其独特的奖励值。
    而奖励值和题目的知识点没有必然联系。 
    现在张程易同学请你帮忙,计算
    在老王规定的时间内,
    张程易所能得到最大奖励值是多少 。

    输入描述 Input Description

    输入文件包括以下内容:
    第一行:
    张程易的水平值和老王的水平值。
    数据保证张程易的水平值小于老王的水平值(哪怕它不现实),
    且老王的水平值是张程易的水平值的整数倍。
    第二行:
    题目的总数m和知识点的总数n。
    第三行:
    n个整数。第i个整数表示 老王在做第i个知识点的题目所需的时间。
    接下来有m行数每一行包括两个整数p,q。
    p表示该题目所属的知识点,q表示该题目对应的奖励值。
    最后一行是规定的时间。

    输出描述 Output Description

    输出文件只有一行,表示能到得到的最大奖励值。

    样例输入 Sample Input

    1 2

    6 4

    1 2 3 4

    1 5

    2 6

    3 3

    4 8

    3 3

    4 5

    20

    样例输出 Sample Output

    22

    数据范围及提示 Data Size & Hint

    对于100%的数据,题目总数<=5000,规定时间<=5000

    分类标签 Tags 点此展开 

    基本思路:
    开一个结构体,记录做这个题的时间(由比值和老王的时间推出来就可以了)和奖励,再跑01背包就可以了。
    代码:
    #include< cstdio >
    #include< iostream >
    using namespace std;
    int n,m,tim[5001],f[5001],sumt;
    struct Ti{
    int timee,val;
    }; 
    Ti ti[5001];
    void input()
    {
    int k,zs,ws;
    scanf("%d%d",&zs,&ws);
    k=ws/zs;
    scanf("%d%d",&m,&n);
    for(int i=1;i<=n;++i)
    scanf("%d",&tim[i]);
    int p;
    for(int i=1;i<=m;++i)
    {
    scanf("%d%d",&p,&ti[i].val);
    ti[i].timee=k*tim[p];
    }
    scanf("%d",&sumt);
    }
    void doit()
    {
    for(int i=1;i<=m;++i)
     for(int j=sumt;j>=ti[i].timee;--j)
     f[j]=max(f[j],f[j-ti[i].timee]+ti[i].val);
    printf("%d",f[sumt]);
    }
    int main()
    {
    input();
    doit();
    return 0;
    }
  • 相关阅读:
    c:forTokens标签循环输出
    jsp转long类型为date,并且格式化
    spring中@Param和mybatis中@Param使用区别(暂时还没接触)
    734. Sentence Similarity 有字典数组的相似句子
    246. Strobogrammatic Number 上下对称的数字
    720. Longest Word in Dictionary 能连续拼接出来的最长单词
    599. Minimum Index Sum of Two Lists两个餐厅列表的索引和最小
    594. Longest Harmonious Subsequence强制差距为1的最长连续
    645. Set Mismatch挑出不匹配的元素和应该真正存在的元素
    409. Longest Palindrome 最长对称串
  • 原文地址:https://www.cnblogs.com/c1299401227/p/5370703.html
Copyright © 2011-2022 走看看