题意

有 \(n\) 个点,分别位于 \((x_i,y_i)\),求最多能用两个长度为 \(k\) 的平台接住多少个点。

\(\texttt{Data Range:}n\leq 2\times 10^5,k\leq 10^9\)

题解

这是 Div.3 的 E 啊,为什么你们的写法都这么繁琐啊……

这题可以不用任何数据结构,甚至双指针都可以不用的啊,而且代码还短,为什么你们都不这样写啊

注意到 \(y\) 坐标没什么卵用,所以只需要考虑 \(x\) 坐标即可。

同时有一个结论:在某个最优的方案中两个平台的左端点一定与某一个点的 \(x\) 坐标一样。

如果不一样的话我可以将平台向右移来达到一样,右移过程中可能还会接到一些新的点,肯定不比之前的答案要差。

把所有点的 \(x\) 坐标从小到大排序,并且设 \(f_i\) 表示某个平台左端点为 \(x_i\) 的时候能接到多少个点。

我们考虑枚举最左边平台的左端点 \(x_u\),这个时候在这个平台右边 \(x\) 坐标最小不能接到的点一定是第 \(u+f_u\) 个。此时第二个平台的最大贡献就是 \(f\) 在 \(u+f_u\sim n\) 的最大值。

容易看出 \(f\) 可以直接指针扫就好了,而那个最大值其实就是后缀最大值,除去排序部分 \(O(n)\) 完事。

代码

#include<bits/stdc++.h>
using namespace std;
typedef int ll;
typedef long long int li;
const ll MAXN=2e5+51;
ll test,n,kk,r,res;
ll x[MAXN],f[MAXN],mx[MAXN];
inline ll read()
{
register ll num=0,neg=1;
register char ch=getchar();
while(!isdigit(ch)&&ch!='-')
{
ch=getchar();
}
if(ch=='-')
{
neg=-1;
ch=getchar();
}
while(isdigit(ch))
{
num=(num<<3)+(num<<1)+(ch-'0');
ch=getchar();
}
return num*neg;
}
inline void solve()
{
n=read(),kk=read();
for(register int i=1;i<=n;i++)
{
x[i]=read();
}
for(register int i=1;i<=n;i++)
{
read();
}
sort(x+1,x+n+1),r=1,res=0,f[n+1]=mx[n+1]=0;
for(register int i=1;i<=n;i++)
{
while(r<n&&x[r+1]-x[i]<=kk)
{
r++;
}
f[i]=r-i+1;
}
for(register int i=n;i;i--)
{
mx[i]=max(mx[i+1],f[i]);
}
for(register int i=1;i<=n;i++)
{
res=max(res,f[i]+mx[i+f[i]]);
}
printf("%d\n",res);
}
int main()
{
test=read();
for(register int i=0;i<test;i++)
{
solve();
}
}

CodeForces 1409E Two Platforms的更多相关文章

  1. Codeforces Round #598 (Div. 3) C. Platforms Jumping 贪心或dp

    C. Platforms Jumping There is a river of width n. The left bank of the river is cell 0 and the right ...

  2. Codeforces Round #598 (Div. 3) C. Platforms Jumping

    There is a river of width nn. The left bank of the river is cell 00 and the right bank is cell n+1n+ ...

  3. Codeforces Round #667 (Div. 3) E. Two Platforms (双指针)

    题意:有\(n\)个点往下落,你可以在最下面放两个长度为\(k\)的板子,问做多能接到多少个点. 题解:这题给纵坐标\(y\)完全没有用,我们先对横坐标\(x\)排序,然后从左边开始枚举,用\(l[i ...

  4. Codeforces Gym 100531I Instruction 构造

    Problem I. Instruction 题目连接: http://codeforces.com/gym/100531/attachments Description Ingrid is a he ...

  5. Codeforces Round #127 (Div. 1) C. Fragile Bridges dp

    C. Fragile Bridges 题目连接: http://codeforces.com/contest/201/problem/C Description You are playing a v ...

  6. Educational Codeforces Round 74 (Rated for Div. 2) C. Standard Free2play

    链接: https://codeforces.com/contest/1238/problem/C 题意: You are playing a game where your character sh ...

  7. 【CF1256】Codeforces Round #598 (Div. 3) 【思维+贪心+DP】

    https://codeforces.com/contest/1256 A:Payment Without Change[思维] 题意:给你a个价值n的物品和b个价值1的物品,问是否存在取物方案使得价 ...

  8. Codeforces Round #667 (Div. 3)

    比赛链接:https://codeforces.com/contest/1409 A. Yet Another Two Integers Problem 题意 给出两个数 $a$ 和 $b$,有以下两 ...

  9. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

随机推荐

  1. Devops实战(一)Docker的部署安装以及Docker-Compose的使用

    Docker的部署安装以及Docker-Compose的使用 1.docker和docker-Compose简介 Docker是一组平台即服务(PaaS)产品,它们使用操作系统级虚拟化以称为容器的软件 ...

  2. 微信小程序 A~Z城市选择器js文件

    微信小程序城市选择 [a~z] 的所有城市选择 city.js a~z排序的城市数据 addressChoose.js 其他js文件可引用 city.js /** * Created by yvded ...

  3. centos7修改ssh端口及添加ssh监听端口

    ssh 修改默认端口 [root@node-1 ~]# vi /etc/ssh/sshd_config 修改port 为 5522 重启[root@node-1 ~]# systemctl resta ...

  4. 获取豆瓣读书所有热门标签并保存到mongodb数据库

    目标url:https://book.douban.com/tag/?view=type&icn=index-sorttags-all 目的:抓取所有标签名称(tag_name),标签链接(t ...

  5. 【编程开发】Python---列表

    ERROR:错误 waring:警告,还没到犯错的地步 print(r'\n')  r"字符串",字符串里的所有字符都不转义 str = "abcdef" 如果 ...

  6. 别人写的很好Arduino教材

    原文来自:https://www.arduino.cn/thread-31720-1-1.html 上一篇:Arduino教程--通过 库管理器 添加库 http://www.arduino.cn/t ...

  7. 正则表达式查找“不包含XXX字符串”

    使用 当我要找到不包含某些字符串(如test)时, 可以使用 # 独立使用 (?!test). # 加头尾判断 ^((?!test).)*$ 原理 正则表达式的断言功能: (?=pattern) 非获 ...

  8. 阿里云服务器安装mongodb并且启动

    // 1.下载 我是直接在local里面创一个mongodb文件夹进行下载和解压 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_ ...

  9. npm包管理器报错-npm ERR! Response timeout while trying to fetch https://registry.npmjs.org/@XXX(over 30000ms)

    由于这两天买的新电脑在短期内频频蓝屏.卡机,不得不把自己其他的本本拿出来换上,但是程序员换电脑是真的痛苦,其他不说就说一个配环境 真的折腾哈 我是一名前端菜鸟,现在自己的本本上使用的是npm包管理工具 ...

  10. Java安全之Commons Collections1分析前置知识

    Java安全之Commons Collections1分析前置知识 0x00 前言 Commons Collections的利用链也被称为cc链,在学习反序列化漏洞必不可少的一个部分.Apache C ...