【题解】小X的AK计划
题目描述
虽然在小X的家乡,有机房一条街,街上有很多机房。每个机房里都有一万个人在切题。小X刚刷完CodeChef,准备出来逛逛。机房一条街有n个机房,第i个机房的坐标为xi,小X的家坐标为0。小X在街上移动的速度为1,即从x1到x2所耗费的时间为|x1−x2|。
每个机房的学生数量不同,ACM题目水平也良莠不齐。小X到达第i个机房后,可以花 ti的时间想题,然后瞬间AK;当然,也可以过机房而不入。
小X现在只有m个单位时间,之后他就该赶着去打Codeforces了。现在他想知道自己最多能在多少个机房AK,希望你帮帮他。
输入格式
第一行包含两个整数n,m。
接下来n行,每行包含两个整数xi,ti。
输出格式
一行,包含一个整数,表示小X最多能AK的机房数量。
输入样例
2 10
1 100
5 5
输出样例
1
题解
我们可以按距离排序,然后从距离近的像距离远的枚举,每次尝试和前面的选取方案更换即可。
我们可以用堆来维护前面的方案,如果还有足够的剩余时间,则将当前机房放入方案里;否则,如果当前机房耗时比前面耗时最大的机房耗时少,则更换这两个机房。
具体参考下面的代码。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue> #define MAX_N (100000 + 5) using namespace std; struct Node
{
long long x;
int t;
friend inline bool operator < (Node a, Node b)
{
return a.x < b.x;
}
}; int n;
long long m;
Node a[MAX_N];
priority_queue <int> q;
int ans; int main()
{
scanf("%d%lld", &n, &m);
for(int i = ; i <= n; ++i)
{
scanf("%lld%d", &a[i].x, &a[i].t);
}
sort(a + , a + n + );
for(int i = ; i <= n; ++i)
{
m -= a[i].x - a[i - ].x;
while(m < && !q.empty())
{
m += q.top();
q.pop();
}
if(m < ) break;
if(m >= a[i].t)
{
m -= a[i].t;
q.push(a[i].t);
}
else if(!q.empty() && a[i].t < q.top())
{
m += q.top();
q.pop();
m -= a[i].t;
q.push(a[i].t);
}
ans = max(ans, (int)q.size());
}
printf("%d", ans);
return ;
}
参考程序
【题解】小X的AK计划的更多相关文章
- luogu P2107 小Z的AK计划
最近复习了一下堆,于是去luogu上找一些简单题写一写 贪心的想,小z不会到一半以后回头去Ak,因为这样从时间上想肯定是不优的,他可以早在之间经过时就AK所以我们可以将所有机房按照横坐标排序可以想到的 ...
- 【P2107】小Z的AK计划(优先队列+贪心)
水一发优先队列的水题.. 这个题貌似以前有做过类似的.具体的方法是用大根堆辅助贪心算法得出正解.可以看出来,如果小Z走到了某个地方,那么他最远一定是到了这里,不可能有再走回来这种操作,因为很明显那样不 ...
- Luogu P2107 小Z的AK计划 堆贪心
好久不做这种题了... 存一下每个点的位置和时间,由于达到某个位置跟之前去哪里AK的无关,所以在时间超限后,可以用大根堆弹掉之前消耗时间最大的,来更新答案,相当于去掉之前花费最大的,直到时间不在超限. ...
- 洛谷P2107 【小Z的AK计划】
#include<iostream> #include<queue> #include<algorithm> using namespace std; struct ...
- [Luogu]小Z的AK计划
Description Luogu2107 Solution 一开始打了一个60分的暴力DP,结果一分都没得--本地调了好久才发现是没开long long. 由于我的DP方程没有任何性质,就是一个01 ...
- [洛谷P2107] 小Z的AK计划
题目类型:贪心,堆 传送门:>Here< 题意:给出\(N\)个房间,每个房间距离起点的距离为\(x[i]\),每个房间可以选择进去和不进去,如果进去了那么要\(t[i]\)秒后才能出来. ...
- 小明的存钱计划 南阳acm54
小明的存钱计划 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 小明的零花钱一直都是自己管理.每个月的月初妈妈给小明300元钱,小明会预算这个月的花销,并且总能做到实际花 ...
- 牛客-小a的旅行计划 + 数学推导
小a的旅行计划 题意: 小a终于放假了,它想在假期中去一些地方游玩,现在有N个景点,编号为,同时小b也想出去游玩.由于一些特殊♂原因,他们的旅行计划必须满足一些条件 首先,他们可以从这N个景点中任意选 ...
- 牛客ACM赛 B [小a的旅行计划 ]
链接 B 小a的旅行计划 把\(n\)个数中选任意数分成\(a,b\)两个集合,集合无区别,要求不包含且有交,求方案数.\(n\leq 10^{13}\) 首先讨论\(a,b\)并集是否为全集: 若是 ...
随机推荐
- jenkinsapi和python打包工具的安装日志
Successfully installed PyInstaller-3.3.1 altgraph-0.15 dis3-0.1.2 future-0.16.0 macholib-1.9 pefile- ...
- JavaScript的进制转换
先介绍两个API: 一.number 类型的 toString 方法 语法 JavaScript: numberObject.toString( [ radix ] ) 参数 参数 描述 radix ...
- git stash--在不想commit的情况下进行git pull
公司的git开发模式是“主干发布,分支开发”,大多数情况下是多个开发在同一dev分支上进行开发,因此需要经常pull代码,如果本地工作区存在代码修改,那么pull肯定失败,提示需要先commit已修改 ...
- 批量定时任务将rtf文件转为docx,入参是rtf文件夹,生成一个docx文件夹
java,python等语言对于rft的处理很受限,rtf提供了很少的api供外部调用处理,但是对于docx我们却又很多api来处理,所以很多人会有需求将rtf批量转为docx的需求,接下来就来说说解 ...
- Python3.5-20190529-自动登录百度
- 设置intellij IDEA编辑框背景色
首先是打开idea开发工具,然后点击左上角的File,选择Settings设置 应用即时生效,无需重启idea
- BZOJ3508 开灯 & [校内NOIP2018模拟20181027] 密码锁
Time Limit: 10 Sec Memory Limit: 128 MB Description xx作为信息学界的大神,拥有众多的粉丝.为了感谢众粉丝的爱戴,xx决定举办一场晚会.为了气派,x ...
- YOLOv1算法理解
1,YOLOv1算法的简介 YOLO算法使用深度神经网络进行对象的位置检测以及分类,主要的特点是速度够快,而且准确率也很高,采用直接预测目标对象的边界框的方法,将候选区和对象识别这两个阶段合二为一, ...
- RabbitMQ:伪延时队列
目录 一.什么是延时队列 二.RabbitMQ实现 三. 延时队列的问题 四.解决RabbitMQ的伪延时方案 ps:伪延时队列先卖个关子,我们先了解下延时队列. 一.什么是延时队列 所谓延时队列是指 ...
- restful风格接口和spring的运用
Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机 ...