1 条题解
-
0
自动搬运
来自洛谷,原作者为

cool_xu
Why didn't i see, the forest on fire behind the snow.搬运于
2025-08-24 21:15:37,当前版本为作者最后更新于2023-11-11 14:37:19,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
Part 1.题目大意
很好理解,就是有 个项目,每个项目有规定时限,时限内完成有奖金,求最多能得到多少奖金。
Part 2.蒟蒻的思路
一眼杀,贪心!
(我是不会告诉你我写过差不多的题的)
以奖金为关键字进行排序,然后再按顺序将每个项目进行枚举,枚举这个项目的时限内有没有空闲时间来完成这个项目。如果有,就标记一下这个时间并将答案加上这个项目的奖金。(记住,得从大时间往小时间枚举!!!)
输出答案,完成!
Part3.蒟蒻的代码
#include <bits/stdc++.h> //万能头起手 using namespace std; struct data{ int money,time; }a[10001]; //记录每个项目的数据以用来sort的结构体数组 int n,m,b[10001]; bool cmp(data x,data y){ return x.money>=y.money; } //sort排序的自定顺序函数 int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].time; }for(int i=1;i<=n;i++){ cin>>a[i].money; } //相信我,cin读入不会超时 sort(a+1,a+1+n,cmp); //sort排序 for(int i=1;i<=n;i++){ bool c=false; //判断是否有空闲时间的布尔值 for(int j=a[i].time;j>=1;j--){ //从大时间往小时间枚举 if(b[j]==0){ //判断时间是否空闲 b[j]=1; //标记 c=true; //有空闲时间 break; //跳出 } }if(c){ //好耶,项目可以完成 m+=a[i].money; //加奖金! } }cout<<m; //汇报一日战果 return 0; }任务完成!谢谢您的阅读~(可以顺手点个赞咩?)
- 1
信息
- ID
- 9420
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者