洛谷—— 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 }
时间: 2024-10-13 02:47:19

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

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

题目背景 数学是火,点亮物理的灯:物理是灯,照亮化学的路:化学是路,通向生物的坑:生物是坑,埋葬学理的人. 文言是火,点亮历史宫灯:历史是灯,照亮社会之路:社会是路,通向哲学大坑:哲学是坑,埋葬文科生.——小A 题目描述 小A“刷题”十分猖狂,明目张胆地“刷题”.他现在在小书童里发现了n样他喜欢的“题目”,每“题”都有他的需要时间,而老师布置了m项作业,每项作业都有它的需要时间及分值,老师规定k分以上算及格.小A只剩r个单位时间,他想在及格的基础上更多地“刷题”. 输入输出格式 输入格式: 第一

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