【题解】小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\)并集是否为全集: 若是 ...
随机推荐
- 各种设备在linux中的文件名
各种设备在linux中的文件名: 设备 设备在linux内的文件名 ide硬盘 /dev/ha[a-d] scs硬盘 /dev/sd[a-p] u盘 /dev/sd[a-p](与SAT ...
- mpvue中的平台状态判断(H5网页 or 小程序)
在开发微信小程序或者微信网页H5的时候,有时我们利用外部组件可能不兼容这两者,需要区分开来,可以在对应的mainjs中配置如下 let platform: try{ if(wx){ platform= ...
- GeneXus笔记本—常用函数(上)
国庆放假没事怎么办?写点笔记充会儿电! ≖‿≖✧ 哈哈哈 !!最近在参与公司的其中一个项目中,发现了一些函数自己没见过 也没使用过,但是这些函数都是GeneXus中自带的一些 这此记录的目的就是为 ...
- MAT in eclipse - memory analyzer
In Help > Install New Software..., enter the following update site URL: http://download.eclipse.o ...
- 数据库系统实现 第一章 DBMS实现概述
DBMS提供的能力 1)持久存储 DBMS在灵活性方面比文件系统要好,同时支持对非常大量数据的存储 2)编程接口 3)事务管理 DBMS支持对数据的并发存取,即多个不同的进程(称作事物)同时存取操作, ...
- JAVA中位数排序
package quickSort; public class QuickSort { private static int count; /** * 测试 * @param args */ publ ...
- globalAlpha 示例
代码实例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 【串线篇】Mybatis拓展之MBG
MBG-逆向工程 一.介绍 MBG:MyBatis Generator:代码生成器: MyBatis官方提供的代码生成器:帮我们逆向生成: 正向: table----javaBean---BookDa ...
- bzoj4182 Shopping 点分治+单调队列优化多重背包
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4182 题解 有一个很直观的想法是设 \(dp[x][i]\) 表示在以 \(x\) 为根的子树 ...
- 牛客网NOIP赛前集训营-提高组(第七场)A-中国式家长 2
题目描述 有一天,牛牛找到了一个叫<中国式家长>的游戏,游戏中需要靠"挖脑洞"来提升悟性. 挖脑洞在一个\(N\)行\(M\)列的地图上进行,一开始牛牛有\(K\)点行 ...