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


    https://www.luogu.org/problem/show?pid=1926#sub

    题目背景

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

    说明

    没有不能及格的情况

    Step1 背包DP 求出得到k分时的最小代价

    Step2 贪心刷题

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 const int N(1000+15);
     7 int n,m,k,r;
     8 int cnt,tim,sum;
     9 int wval[N],f[N];
    10 int home[N],work[N];
    11 
    12 int main()
    13 {
    14     scanf("%d%d%d%d",&n,&m,&k,&r);
    15     for(int i=1;i<=n;i++) scanf("%d",home+i);
    16     for(int i=1;i<=m;i++) scanf("%d",work+i),sum+=work[i];
    17     for(int i=1;i<=m;i++) scanf("%d",wval+i);
    18     for(int i=1;i<=m;i++)
    19       for(int j=sum;j>=work[i];j--)
    20         f[j]=max(f[j],f[j-work[i]]+wval[i]);
    21     sort(f+1,f+sum+1);
    22     for(int i=1;i<=sum;i++)
    23         if(f[i]>=k)
    24         {
    25             tim=i;
    26             break;
    27         }
    28     sort(home+1,home+n+1);
    29     for(int i=1;i<=n;i++)
    30     {
    31         if(tim+home[i]<=r)
    32         {
    33             cnt++;
    34             tim+=home[i];
    35         }            
    36         else break;
    37     }
    38     printf("%d",cnt);
    39     return 0;
    40 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    挑战程序设计竞赛第二章、贪心部分
    Life is Strange:《奇异人生》
    算法竞赛进阶指南第二章--题解
    算法竞赛进阶指南第一章题解
    2018 IEEE极限编程大赛 题解
    爬格子呀9.17(图论)
    大数模板(加减乘除幂次开方)
    地理位置(Geolocation)API 简介
    javascript闭包的理解
    H5本地离线存储
  • 原文地址:https://www.cnblogs.com/Shy-key/p/6945018.html
Copyright © 2020-2023  润新知