• AC日记——小书童——刷题大军 洛谷 P1926


    题目背景

    数学是火,点亮物理的灯;物理是灯,照亮化学的路;化学是路,通向生物的坑;生物是坑,埋葬学理的人。 文言是火,点亮历史宫灯;历史是灯,照亮社会之路;社会是路,通向哲学大坑;哲学是坑,埋葬文科生。——小A

    题目描述

    小A“刷题”十分猖狂,明目张胆地“刷题”。他现在在小书童里发现了n样他喜欢的“题目”,每“题”都有他的需要时间,而老师布置了m项作业,每项作业都有它的需要时间及分值,老师规定k分以上算及格。小A只剩r个单位时间,他想在及格的基础上更多地“刷题”。

    输入输出格式

    输入格式:

    第一行:n m k r。第二行:n个数,代表每“题”他的需要时间。第三行:m个数。表示每项作业它的需要时间。第四行:m个数。代表每项作业它的分值。

    输出格式:

    一个数,代表小A能刷几道题

    输入输出样例

    输入样例#1:
    3 4 20 100
    15 20 50
    10 15 40 40
    5 5 10 15
    输出样例#1:
    2

    说明

    没有不能及格的情况

    思路:

      有坑的水题使我快乐;;

      先dp,找出做作业到及格的最少时间;

      然后,r-=mintime;

      然后刷题的01背包或者贪心;

    来,上代码:

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    int if_z,n,m,r,k,dp[100005],vi[10005];
    int ci[10005],vi_[10005],num;
    
    char Cget;
    
    inline void in(int &now)
    {
        now=0,if_z=1,Cget=getchar();
        while(Cget>'9'||Cget<'0')
        {
            if(Cget=='-') if_z=-1;
            Cget=getchar();
        }
        while(Cget>='0'&&Cget<='9')
        {
            now=now*10+Cget-'0';
            Cget=getchar();
        }
        now*=if_z;
    }
    
    int main()
    {
        in(n),in(m),in(k),in(r);
        for(int i=1;i<=n;i++) in(vi_[i]);
        for(int i=1;i<=m;i++) in(vi[i]),num+=vi[i];
        for(int i=1;i<=m;i++) in(ci[i]);
        for(int i=1;i<=m;i++)
        {
            for(int j=num;j>=vi[i];j--) dp[j]=max(dp[i],dp[j-ci[i]]+vi[i]);
        }
        int pos=dp[k];
        for(int i=k+1;i<=num;i++) pos=min(pos,dp[i]);
        r-=pos;int ans;
        sort(vi_+1,vi_+n+1);
        for(int i=1;i<=n;i++)
        {
            if(vi_[i]<=r)
            {
                ans++;
                r-=vi_[i];
            }
            else break;
        }
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    Google app engine python 2.5.4 安装ssl
    Ubuntu 10.04分辨率
    Google Voice 国内用户开通全攻略(图文)
    (linux)查看及修改文件权限以及相关
    InstallAnyWhere使用笔记制作升级补丁时的一些判断
    openoffice 编译依赖关系履历
    匹配连续的任意字词
    BT3 无线密码
    All roads lead to Rome, some smooth, some rough.
    test
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6486157.html
Copyright © 2020-2023  润新知