首页 > 其他分享 >CF1550F 题解

CF1550F 题解

时间:2022-12-02 08:56:19浏览次数:61  
标签:题解 青蛙 mid leq 步长 cdots CF1550F

题意

传送门

数轴上顺次有 \(n\) 个点 \(a_1 < a_2 < \cdots < a_n\)。

有一只小青蛙,初始时在 \(a_s\) 处。小青蛙有两个参数:步长 \(d\) 和灵活程度 \(k\)。其中,步长 \(d\) 是确定的,而灵活程度 \(k\) 是可以调整的。

小青蛙可以从某个点跳到另一个点。但这是有要求的:小青蛙能从 \(a_i\) 跳到 \(a_j\),当且仅当 \(d-k\leq |a_i-a_j|\leq d+k\)。

给定 \(a_1,...,a_n\) 和 \(d\)。你需要回答 \(q\) 次询问,每次询问给定一个灵活程度 \(k\) 和一个下标 \(i\),你需要回答:此时的小青蛙能否跳到 \(a_i\)?

\(1\leq n,q\leq 2\times 10^5\),\(1\leq s,i\leq n\),\(1\leq a_i,d,k\leq 10^6\),\(a_1 < a_2 < \cdots < a_n\)。

题解

借这题学习了整体二分。记一下。

发现答案有单调性,我们只需要对每个点求出能到达它的最小 \(k\),就能 \(O(1)\) 回答。

对值域整体二分,设当前值域区间为 \([l,r]\),考虑所有答案在 \([l,r]\) 的点。我们只需要将这些点分为 \([l,mid]\) 与 \((mid,r]\) 的两部分,递归解决即可。并由单调性,等价于根据 \(k=mid\) 时的可达与否分组。

此时答案在 \([0,l)\) 的点已经存在,利用他们更新 \(k=mid\) 时能跳到的点。

待考虑的点有两种方式更新:1. 由 \([0,l)\) 的一步跳到;2. 由第一种点跳到。第一种用 set 即可;第二种可以用队列和 set(类似广搜)。这样的方式可以保证 \(O(n \log^2 n)\) 的复杂度。

标签:题解,青蛙,mid,leq,步长,cdots,CF1550F
From: https://www.cnblogs.com/FishJokes/p/16943353.html

相关文章

  • 题解 CF1703G Good Key, Bad Key
    先放个代码。intn,k;cin>>n>>k;vector<vector<int>>a(n+5,vector<int>(35));for(inti=1;i<=n;i++){cin>>a[i][0];for(intj=1;j......
  • 网络搭建赛题解法
    网络搭建赛题解法准备工作1.所有云主机都要设置ip2.关闭防火墙和selinuxsetenforce0systemctlstopfirewall3.所有主机配置yum源mkdir/mnt/cdrommount/dev/cd......
  • ABC250简要题解
    重点在于简要A,B,C,语法题,跳了。D是埃筛求个质数枚举一下,跳了、E神秘的哈希。对于前\(i\)个数搞个可加哈希,这样能\(O(1)\)比较。给了个神秘的哈希方式是\(\suma......
  • jeecg问题解决方案
    1.jeecg数据库脚本问题  注意:jeecg3.5.2之前版本,不需要数据库脚本,程序会自动初始化数据库。从3.5.2+开始,需要手工执行SQL脚本,初始化数据库。  2.  Eclipse内存溢......
  • JOISC 2021 简要题解
    「JOISC2021Day1」饮食区维护\(n\)个队列,支持\(m\)次操作:在\([l,r]\)号队列的尾端均加入\(k\)个颜色\(c\)的球。将\([l,r]\)号队列的前\(k\)个球pop......
  • 【题解】LOJ #6672(感谢强大 alpha!!1【4】)
    考虑完整的一段的GF为\(u\),那么答案为\([x^n]u^{m}\)(令\(m=k-1\))。考虑\(u\)是什么,发现和此默慈金数相关——我们令\(M\)为默慈金数的GF,根据递推式\(M_{n+1}......
  • NOIP2022 题解
    A.种花有的人把名字写进题面,想“不朽”。签到题。枚举c和f的最左边那一列的位置,然后做一个类似前缀和的东西。B.喵了个喵压轴题。首先\(k=2n-2\)有一个非常好......
  • 【题解】ABC237G Row Column Sums 2(感谢强大 alpha!!1【3】)
    题意:求\(n\timesn\)方阵个数,满足每列之和为\(R_i\),每行之和为\(C_i\)。数据范围:\(0\leqR_i,C_i\leq2\),\(n\leq10^7\)。转二分图,相当于限定左侧每个点和右侧......
  • 剑指offer题解C++版
    一,常见数据结构1,数组3-找出数组中重复的数字4-二维数组中的查找5-替换空格29-顺时针打印矩阵leetcode989-数组形式的整数加法leetcode26-删除有序数组中的重复......
  • 问题解决系列:遇到tomcat的假死问题,如何排查问题
    (文章目录)问题场景线上,有时候会遇到一种这样的情况:tomcat没有奔溃退出,输出日志也没有异常,但是界面访问就一直卡着。假如遇到这种情况,没错,你遇到了tomcat假死问题了。那么......