首页 > 其他分享 >D. Jumping Through Segments

D. Jumping Through Segments

时间:2023-12-08 15:22:46浏览次数:36  
标签:rp int Segments len 最小值 Jumping Through lp return

题目传送门

我是彩笔

二分trigger:存在一个最小值,使得当大于最小值时一定成立,小于最小值时一定不成立

#include<bits/stdc++.h>
using namespace std;
int n;
int l[200005]={0},r[200005]={0};
int ss(int len)
{
    int now=0;
    int lp=0,rp=0;//代表第i此行动后能到达的有效区间
    for(int i=1;i<=n;i++)
    {
        if(l[i]>rp)//在前一个边界的右边
        {
            if(l[i]-rp>len)return 0;//到不了
            rp=min(r[i],rp+len);
            lp=l[i];
        }
        else if(r[i]<lp)//在前一个边界的左边
        {
            if(lp-r[i]>len)return 0;
            lp=max(l[i],lp-len);
            rp=r[i];
        }
        else//有交叉
        {
            rp=min(r[i],rp+len);
            lp=max(l[i],lp-len);
        }
    }
    return 1;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)scanf("%d%d",&l[i],&r[i]);
        int x=-1,y=2e9+2;
        while(x<y-1)
        {
            int mid=x+(y-x)/2;
            if(ss(mid))y=mid;
            else x=mid;
        }
        printf("%d\n",y);
    }
    return 0;
}

标签:rp,int,Segments,len,最小值,Jumping,Through,lp,return
From: https://www.cnblogs.com/pure4knowledge/p/17888242.html

相关文章

  • Fiori WalkThrough学习-Step02.Bootstrap
    1.Index.html<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>UI5Walkthrough</title><scriptid="sap-ui-bootstrap"src="https://openui5.hana.ondemand.co......
  • hackthebox format medium walkthrough
    walkthough 1.Wemustbrowsethewebsiteandlookupthebusinesspointforthewebpage.atthisboxwecanfindthecoderepository.codeauditinganddiscoveringtheprivilegeescalatedthroughtheRedisUnixsockvulnerability.2.Afterprivilegeescalat......
  • [ARC168E] Subsegments with Large Sums
    题目链接看到严格选\(k\)个,不难想到WQS二分。定义\(f(x)\)为分成\(x\)段,最多有多少个超过\(S\)的。然后你会发现他不是凸的。因为他有很多平段,比如把两个很小的合并不改变答案。换个方向?考虑定义\(f(x)\)为有\(x\)个超过\(S\)的段,最多有多少个段。然后发现这个......
  • [ARC168E] Subsegments with Large Sums
    有点意思的简单题。答案有可二分性。合并两段,显然仍然合法。考虑如何check。因为答案可以被二分,我们尝试求恰好\(x\)段就行了。恰好,这是wqs二分的内容。如何设计一个与\(x\)有关的凸函数呢?这个函数大概是\(\sum_{i=1}^xw(l_i,r_i)\)的形式,每一个\([l,r]\)都是合......
  • CF685E Travelling Through the Snow Queen's Kingdom
    题意给定一张图,走出当前边的时间为\(i\)。\(q\)次询问,问\(s\)是否能在\(l\tor\)中走到\(t\)。Sol考虑将边从大到小插入图中。注意到当前边只能对起点造成贡献。复杂度\(O(n\times\max\{n,m\})\)Code#include<iostream>#include<algorithm>#include<cstd......
  • 什么是 DTU(Database Throughput Unit)
    在云计算领域,DTU是DatabaseThroughputUnit的缩写,它代表着数据库吞吐单位,是一种用于度量数据库性能的单位。DTU概念主要应用于AzureSQLDatabase和AzureSQLManagedInstance,它是一种抽象的、预配置的资源集合,包括CPU、内存、读写操作等。在DTU模型中,每个服务级别都......
  • [题解] CF1156E Special Segments of Permutation
    SpecialSegmentsofPermutation给你一个排列\(p\),求有多少个区间\([l,r]\)满足\(p_l+p_r=\max_{i\in[l,r]}p_i\)。\(n\le2\times10^5\)。按最大值分治,记当前的分治中心为\(mid\),分治区间为\([l,r]\)。然后需要计算跨分治中心的贡献。如果\(mid-l......
  • [题解] CF1327F AND Segments
    ANDSegments有\(m\)个限制\((l,r,x)\)。要计算满足以下条件的长度为\(n\)的序列\(a\)的数量:\(\foralli\in[1,n],0\lea_i<2^k\)。\(\foralli\in[1,m],a_{l_i}\operatorname{and}a_{l_i+1}\operatorname{and}\cdots\operatorname{and}a_{r......
  • [CF1588F] Jumping Through the Array
    不妨认为\(n,q\)同阶。考虑根号重构。如果没有第3种操作的话,我们每\(\mathcalO(\sqrtn)\)操作整体更新一次,每个询问只需要考虑块内的修改所在置换环上有多少\([l,r]\)内的数。这个是容易\(\mathcalO(n\sqrtn)\)做的。然后考虑置换环会变怎么办。注意到一个块内真......
  • A Tour Through TREE_RCU's Expedited Grace Periods (翻译)
    原文:https://www.kernel.org/doc/html/latest/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.htmlATourThroughTREE_RCU'sExpeditedGracePeriods通过TREE_RCU的加速宽限期进行一次旅行Introduction引言ThisdocumentdescribesRCU'sexpeditedgracep......