DescribeDescribeDescribe

给定buildtreebuildtreebuildtree函数

void buildtree(int k,int l,int r)
{if(l==r) return;int mid=l+r>>1;buildtree(k<<1,l,mid);buildtree(k<<1|1,mid+1,r);
}

先给定叶子线段[L,R][L,R][L,R]求其根节点的最小右边界(左边界为0),若答案超过limlimlim则输出-1

30%lim≤10330\%\ lim\leq 10^330% lim≤103
100%lim≤109,0≤L≤R,T≤100,LR−L+1≤2×103100\%\ lim\leq 10^9\ ,0\leq L\leq R\ ,T\leq 100\ ,\frac{L}{R-L+1}\leq2\times 10^3100% lim≤109 ,0≤L≤R ,T≤100 ,R−L+1L​≤2×103


SolutionSolutionSolution

首先枚举根节点,很容易打出来这样一个暴力

inline bool build(register int k,register int l,register int r,register int fl,register int fr)
{if(l==fl&&r==fr) return true;//存在if(l==r) return false;//返回int mid=l+r>>1;return build(k<<1,l,mid,fl,fr)||build(k<<1|1,mid+1,r,fl,fr);//
}

然后你就可以getgetget到30pointspointspoints

接着,斐大爷一脸兴奋:这题dfsdfsdfs啊,然后告诉我可以从子树倒过来找父亲节点。过程如下

当该节点为左儿子时,设父节点为[pl,pr][pl,pr][pl,pr]则pl=lpl=lpl=l,r=mid=(pl+pr)/2r=mid=(pl+pr)/2r=mid=(pl+pr)/2,设prprpr为xxx,依题得⌊l+x2⌋=r\lfloor\frac{l+x}{2}\rfloor=r⌊2l+x​⌋=r,解得x1=2r−lx_1=2r-lx1​=2r−l,x2=2r−l+1x_2=2r-l+1x2​=2r−l+1

当该节点为右儿子时,设父节点为[pl,pr][pl,pr][pl,pr]则pr=rpr=rpr=r,l=mid+1=(pl+pr)/2+1l=mid+1=(pl+pr)/2+1l=mid+1=(pl+pr)/2+1,设plplpl为xxx,依题得⌊x+r2⌋+1=l\lfloor\frac{x+r}{2}\rfloor+1=l⌊2x+r​⌋+1=l,解得x1=2l−r−1x_1=2l-r-1x1​=2l−r−1,x2=2l−r−2x_2=2l-r-2x2​=2l−r−2

时间复杂度:O(LR−L+1)2O(\frac{L}{R-L+1})^2O(R−L+1L​)2


CodeCodeCode

#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;int n,t,l,r,lim,ans;
inline long long read()
{char c;int d=1;long long f=0;while(c=getchar(),!isdigit(c))if(c=='-')d=-1;f=(f<<3)+(f<<1)+c-48;while(c=getchar(),isdigit(c)) f=(f<<3)+(f<<1)+c-48;return d*f;
}
inline void write(long long x){if(x>9)write(x/10);putchar(x%10+48);return;}
inline void dfs(register int l,register int r)
{if(r>ans||l<0||r>lim) return;if(l==0) {ans=min(ans,r);return;}int pl,pr;if(2*l<r) return;pl=l;pr=2*r-l;  if(pl<pr)dfs(pl,pr);pl=l;pr=2*r-l+1;if(pl<pr)dfs(pl,pr);pl=2*l-1-r;pr=r;if(pl<pr)dfs(pl,pr);pl=2*l-2-r;pr=r;if(pl<pr)dfs(pl,pr);return;
}
signed main()
{t=read();while(t--){l=read();r=read();lim=read();lim=min(l+r,lim);if(lim<r) {puts("-1");continue;}if(l==r){if(l<=lim) write(r),putchar(10);else puts("-1");continue;}ans=0x7fffffff;dfs(l,r);if(ans==0x7fffffff) puts("-1");else write(ans),putchar(10);}
}

2019.1.21【NOIP提高组】模拟B组 JZOJ 4208 线段树什么的最讨厌了相关推荐

  1. 2019.01.21 bzoj2441: [中山市选2011]小W的问题(树状数组+权值线段树)

    传送门 数据结构优化计数菜题. 题意简述:给nnn个点问有多少个www型. www型的定义: 由5个不同的点组成,满足x1<x2<x3<x4<x5,x3>x1>x2 ...

  2. [CSP-S模拟测试]:模板(ac)(线段树启发式合并)

    题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了. 他每天都被$katarina$大神虐,仗着自己学过一些姿势就给$katarina$大神出了一道题. 有一棵$n$个节点的以$1$ ...

  3. JZOJ 5281. 【NOIP提高组模拟A组8.15】钦点

    Description Input Output Sample Input 4 4 2 a a b b a a b b c c d d c c d d 1 1 3 3 2 2 3 1 1 3 2 2 ...

  4. JZOJ5857 【NOIP提高组模拟A组2018.9.8】没有上司的舞会

    题目 Description "那么真的有果尔德施坦因这样一个人?"他问道. "是啊,有这样一个人,他还活着.至于在哪里,我就不知道了." "那么那个 ...

  5. 【二分,找规律】Day 14 提高组模拟C组 T1 小麦亩产一千八

    题目大意 给定斐波那契的第aaa项,求出第b" role="presentation">bbb项,默认第0项为1 解题思路 方法一:递推 找到规律后O(b)O(b) ...

  6. jzoj4805-[NOIP2016提高A组模拟9.28]跟踪【dfs,树】

    正题 题目大意 一棵树一个人从sss开始,有两个追击者从p,qp,qp,q出发, 在3k+1s3k+1\ s3k+1 s,那个人走 在3k+2和3k+3s3k+2和3k+3\ s3k+2和3k+3 s ...

  7. 牛客OI周赛10-提高组:B-Taeyeon的困惑(值域线段树)

    做法 单点加单点删,在值域线段树上直接二分就能求值前\(K\)小的和 Code #include<bits/stdc++.h> typedef long long LL; const LL ...

  8. jzoj5365-[GDOI2018模拟9.14]通信【线段树合并】

    正题 题目大意 nnn个节点的一棵树,随机选择一个区间,求这个区间的点所构成的虚树的期望权值和. 解题思路 考虑每一条边的贡献,定义一边的点为黑点,一边的为白点,显然包含黑白的区间都会产生贡献.考虑减 ...

  9. 瓜瓜的时空旅行,第三次模拟赛,dfs序+线段树维护最小值

    题目描述 西瓜们生活在编号 1⋯n 的 n个平行时空中,2n−2 台时光机将这些平行时空联系在一起.一台时光机有 3个整数参数 u,v,t 表示从时空 u 可以花费 t 的时间穿梭到时空 v.为了确保 ...

最新文章

  1. 以OpenGL/ES视角介绍gfx-hal(Vulkan) Framebuffer接口使用
  2. mysql 调试分析利器_使用systemtap调试工具分析MySQL的性能
  3. abb工业机器人电压不稳_ABB工业机器人应用常见故障九问九答
  4. mac转换pin计算机,MAC对应PIN码表-2012.3.4整理
  5. Android 项目必备(十四)--> 开发者选项
  6. php gd 坐标,【PHP】GD库笔记 初探GD库的坐标
  7. bootstrap class path not set in conjunction with -source 1.6
  8. 1404111-67-6,N-Boc-PEG5-alcohol,N-Boc-PEG5-CH2CH2OH实验室常用试剂的保存方法
  9. 关于《完全用Linux工作》的思考
  10. 在我的世界中,B站UP主搭建世界首个纯红石神经网络,图灵奖得主Yann LeCun转赞...
  11. Docker安装Tomcat镜像并部署web项目简述
  12. 提示错误Cannot read properties of null (reading ‘value‘)
  13. 贝塞尔曲线 unity两点画曲线弧线三点
  14. 【 无线网络技术 】实验一、构建无线网络实验环境
  15. qduoj 生化危机
  16. 9.5 考试 第三题 奇袭题解(codeforce 526f)
  17. 独立博客网站做网站推广的一些想法
  18. 5.1.3 电压基准源TL431
  19. python爬虫淘宝登录_淘宝的模拟登录(python3+selenium)
  20. 2021-2027全球及中国电能质量监测与治理行业研究及十四五规划分析报告

热门文章

  1. 微信小程序--picke选择器(省市区城市)-- 使用taro开发
  2. uniapp使用插件 小程序正常 app报错cid unmatched at view.umd.min.js:1
  3. 深度学习在推荐领域的应用:Lookalike 算法
  4. 单片机实例6——报警产生器(硬件电路图+汇编程序+C语言程序)
  5. 一位开发大神的“告别信”!
  6. java 素数 五行_c语言动态烟花小程序代码
  7. 报错:TypeError: Image data of dtype object cannot be converted to float
  8. C语言程序设计入门——水仙花数
  9. React + Springboot + Quartz,从0实现Excel报表自动化
  10. Nuvoton emWin HMI Solution