博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[洛谷P2107]小Z的AK计划
阅读量:4948 次
发布时间:2019-06-11

本文共 885 字,大约阅读时间需要 2 分钟。

题目大意:有$n$个物品,第$i$个物品在$p_i$,大小为$w_i$,你在$0$,要求移动距离加上大小总和小于$m$,问你最多可以拿多少物品

题解:贪心, 按距离排序,每次遇到一个物品就把大小加入一个大根堆,若堆中元素大小和加上距离大于$m$,就把最大值删去,直到符合

卡点:

 

C++ Code:

#include 
#include
#include
#define maxn 100010long long n, m, ans;struct node { long long t, d; inline bool operator < (const node &rhs) const {return d < rhs.d;}} s[maxn];std::priority_queue
q;int main() { scanf("%lld%lld", &n, &m); for (int i = 1; i <= n; i++) { scanf("%lld%lld", &s[i].d, &s[i].t); } std::sort(s + 1, s + n + 1); long long res = 0, sum = 0; for (int i = 1; i <= n; i++) { if (s[i].d > m) break; q.push(s[i].t); sum += s[i].t; res++; while (sum + s[i].d > m) { sum -= q.top(); q.pop(); res--; } ans = std::max(res, ans); } printf("%lld\n", ans); return 0;}

  

转载于:https://www.cnblogs.com/Memory-of-winter/p/9863520.html

你可能感兴趣的文章
win7任务栏还原为xp样式
查看>>
PYTHON_3和2
查看>>
json数组的取值方法
查看>>
2019-7-15 vue01day
查看>>
SELECT LOCK IN SHARE MODE and FOR UPDATE
查看>>
Perl/Nagios – Can’t locate utils.pm in @INC
查看>>
目录导航「深入浅出ASP.NET Core系列」
查看>>
Git常用命令拾遗
查看>>
Canvas的drawImage方法使用
查看>>
自定义适用于手机和平板电脑的 Dynamics 365(四):窗体脚本
查看>>
阴影效果参考网址
查看>>
华为交换机端口镜像
查看>>
简易爬虫(爬取本地数据)
查看>>
一位菜鸟的java 最基础笔记
查看>>
python 进程间通信
查看>>
字符串和编码
查看>>
servlet(一)
查看>>
异常实验
查看>>
python \r与\b的应用、光标的含义
查看>>
深拷贝 vs 浅拷贝 释放多次
查看>>