洛谷 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

说明

没有不能及格的情况

对于100%的数据,n\le 10,m\le 10,k\le 50,r\le 150n≤10,m≤10,k≤50,r≤150

背包dp

先求及格下最少花费时间 然后按时间长短开始刷题

dp入门中。。

屠龙宝刀点击就送

#include <algorithm>
#include <cstring>
#include <cstdio>
#define N 205

using namespace std;
int sigma,n,m,k,r,t_t[N],t_z[N],s[N],f[N];
int max(int a,int b) {return a>b?a:b;}
int main()
{
    scanf("%d%d%d%d",&n,&m,&k,&r);
    for(int i=1;i<=n;i++) scanf("%d",&t_t[i]);
    for(int i=1;i<=m;i++) scanf("%d",&t_z[i]),sigma+=t_z[i];
    for(int i=1;i<=m;i++) scanf("%d",&s[i]);
    for(int i=1;i<=m;i++)
        for(int j=sigma;j>=t_z[i];j--)
            f[j]=max(f[j-t_z[i]]+s[i],f[j]);
    sort(f+1,f+1+sigma);
    int last_;
    for(int i=1;i<=sigma;i++)
    {
        if(f[i]>=k)
        {
            last_=i;
            break;
        }
    }
    sort(t_t+1,t_t+n);
    int i=1;
    last_=r-last_;
    for(;last_-t_t[i]>0&&i<=n;i++)
        last_-=t_t[i];
    printf("%d\n",i-1);
    return 0;
}
时间: 2024-12-25 19:27:06

洛谷 P1926 小书童——刷题大军的相关文章

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

https://www.luogu.org/problem/show?pid=1926#sub 题目背景 数学是火,点亮物理的灯:物理是灯,照亮化学的路:化学是路,通向生物的坑:生物是坑,埋葬学理的人. 文言是火,点亮历史宫灯:历史是灯,照亮社会之路:社会是路,通向哲学大坑:哲学是坑,埋葬文科生.——小A 题目描述 小A“刷题”十分猖狂,明目张胆地“刷题”.他现在在小书童里发现了n样他喜欢的“题目”,每“题”都有他的需要时间,而老师布置了m项作业,每项作业都有它的需要时间及分值,老师规定k分以上

洛谷 P1916 小书童——蚂蚁大战

P1916 小书童——蚂蚁大战 题目背景 小A在你的帮助下,开始“刷题”,他在小书童里发现了一款叫“蚂蚁大战”(又称蛋糕保卫战)的游戏.(你懂得) 题目描述 游戏中会出现n只蚂蚁,分别有a1,a2……an的血量,它们要吃你的蛋糕.当然,你不会袖手旁观.你有m元钱,可以用来造防御塔,每个塔k元.塔的威力是每秒w滴血.此外,在第r秒时,蚂蚁会把蛋糕搬进窝.小A想知道,在第r秒时,会有多少块蛋糕被搬进窝(一只蚂蚁搬一块蛋糕). 输入输出格式 输入格式: 第一行:n m k w r.第2~n+1行:a1

洛谷——P1916 小书童——蚂蚁大战

P1916 小书童——蚂蚁大战 题目背景 小A在你的帮助下,开始“刷题”,他在小书童里发现了一款叫“蚂蚁大战”(又称蛋糕保卫战)的游戏.(你懂得) 题目描述 游戏中会出现n只蚂蚁,分别有a1,a2……an的血量,它们要吃你的蛋糕.当然,你不会袖手旁观.你有m元钱,可以用来造防御塔,每个塔k元.塔的威力是每秒w滴血.此外,在第r秒时,蚂蚁会把蛋糕搬进窝.小A想知道,在第r秒时,会有多少块蛋糕被搬进窝(一只蚂蚁搬一块蛋糕). 输入输出格式 输入格式: 第一行:n m k w r.第2~n+1行:a1

在洛谷3369 Treap模板题 中发现的Splay详解

本题的Splay写法(无指针Splay超详细) 前言 首先来讲...终于调出来了55555...调了整整3天..... 看到大部分大佬都是用指针来实现的Splay.小的只是按照Splay的核心思想和原理来进行的.可能会有不妥之处,还请大佬们指出,谢谢! 那么这个题解存在的意义就是让不会敲Splay的人额...会敲Splay啦... 基本思想 数据结构 对于Splay,我定义了一个class类(当成struct就行啦...个人习惯不同啦),定义名称为“Splay”. 之后在类中,我定义了Splay

洛谷P2429 制杖题 [2017年6月计划 数论10]

P2429 制杖题 题目描述 求不大于 m 的. 质因数集与给定质数集有交集的自然数之和. 输入输出格式 输入格式: 第一行二个整数 n,m. 第二行 n 个整数,表示质数集内的元素 p[i]. 输出格式: 一个整数,表示答案,对 376544743 取模. 输入输出样例 输入样例#1: 2 15 3 5 输出样例#1: 60 说明 样例解释:所有符合条件的数为 3,5,6,9,10,12,15 其和为 60. ··· 测试点编号 规模 1 2 3 n*m<=10^7 4 5 n<=2,m&l

[洛谷P3254] [网络流24题] 圆桌游戏

Description 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri (i =1,2,--,m). 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,--,n)个代表就餐. 为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐.试设计一个算法,给出满足要求的代表就餐方案. 对于给定的代表数和餐桌数以及餐桌容量,编程计算满足要求的代表就餐方案. Input 第1 行有2 个正整数m 和n,m 表示单位数,n 表示餐桌数,1<=m<=150, 1

洛谷-牛数-野题

题目描述 Description 我们下面来研究整数性质,我们知道质数只有 1和自身两个因子,合数至少有除了 1和自身的其他因子,我们也知道“猫老大数”是只能分解成两个质数乘积形式的数,那么能分解成两个合数的数呢?我们称之为“牛数”.下面编程判断整数是否为“牛数”. 输入输出格式 Input/output 输入格式:第一行为 t(1<=t<=100),表示测试数据组数. 接下来 t行,每行一个正整数x(1<=x<=10^9)输出格式: 对于每个输入数据 x,判断它是否为“牛数”,并

洛谷P4145上帝造题的七分钟——区间修改

题目:https://www.luogu.org/problemnew/show/P4145 区间开平方,可以发现其实开几次就变成1,不需要开了,所以标记一下,每次只去开需要开的地方: 原来写的并查集跳过1或0,然而WA... (如果a数组<原数组>开int会RE!) 改成线段树,本来想着是这一段区间和只要小于等于其长度就可以跳过了,然而仔细想想完全不是,应为可能有多个0什么的: 所以直接开bool数组标记一下就好了: 不需要pushdown,直接去修改或是跳过. 并查集: #include&

洛谷——背包型dp

1.P1417 烹调方案 题目背景 由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的食物准备填饱肚子.gw希望能在T时间内做出最美味的食物,但是这些食物美味程度的计算方式比较奇葩,于是绝望的gw只好求助于你了. 题目描述 一共有n件食材,每件食材有三个属性,ai,bi和ci,如果在t时刻完成第i样食材则得到ai-t*bi的美味指数,用第i件食材做饭要花去c