当前位置: 首页 > news >正文

织梦网站首页幻灯片不显示新华美玉官方网站在线做

织梦网站首页幻灯片不显示,新华美玉官方网站在线做,手机网站有什么好处,为离职员工做的网站d先来想想最后什么样的线段是符合条件的&#xff0c;在每一轮询问中&#xff0c;给出a,b两个奇数点&#xff0c;如果线段 i (1<i<m)覆盖了a&#xff0c;b的其中一个点&#xff0c;但没有两个点都覆盖&#xff0c;这样的线段i就符合与线段ab相交 什么是覆盖 &#xff0c;…

d先来想想最后什么样的线段是符合条件的,在每一轮询问中,给出a,b两个奇数点,如果线段 i (1<=i<=m)覆盖了a,b的其中一个点,但没有两个点都覆盖,这样的线段i就符合与线段ab相交

什么是覆盖 ,如下图,线段(4,6)和(2,8)都覆盖了点5,形式化讲,如果线段(a,b) (a<b)和点c,如果a<c且b>c就说线段(a,b)覆盖了点c

如何快速计算有多少个这样的线段 i 呢,如果我们知道给出的m个线段之间的覆盖关系就好了,具体如下,如果线段 j 直接覆盖 线段 i,让节点j当节点i的父亲,如果没有线段直接覆盖线段i,线段i的父亲是节点0

直接覆盖的关系如下:

线段2和3都覆盖了1,拿2来说,4<6且10>8 ,所以说2覆盖了1,2是直接覆盖1的,3不是,所以每个线段要么没有其他线段覆盖他,要么直接覆盖的线段唯一,因此我们构建出的是一颗树,这颗树的节点范围是1到m

这颗树有什么用?若在一轮询问中给出点a和b,记直接覆盖点a的线段是a1,直接覆盖点b的线段是b1,(这里,点被线段直接覆盖,关系和线段被线段直接覆盖类似),则树上从a1到b1的路径中除lca(a1,b1)外的节点对应的线段都满足覆盖了a,b中的一个点而没有全部覆盖,如果用倍增法计算出lca(a1,b1),也知道每个节点的深度,就可以在log(m)时间得到答案:dep[a1]+dep[b1]-2*dep[lca(a1,b1)]

接下来需要解决:
如何得到直接覆盖线段i的线段j,和覆盖点c的线段i,这可以用栈来模拟完成,具体方法见代码

#include<bits/stdc++.h>
using namespace std;
using ll=long long;const ll maxn=1e6+5,maxm=2e5+5;
ll mincov[maxn*2],id[maxn*2],dep[maxm],par[maxm][(ll)log2(maxm)+10];
ll n,m,K;ll lca(ll x,ll y){if(dep[x]<dep[y]) swap(x,y);for(ll i=K;i>=0;i--){if(dep[par[x][i]]>=dep[y]) x=par[x][i];}if(x==y) return x;for(ll i=K;i>=0;i--){if(par[x][i]!=par[y][i]){x=par[x][i];y=par[y][i];}}return par[x][0];
}int main()
{ios::sync_with_stdio(0);cin.tie(0);freopen("D:/in.txt","r",stdin);cin>>n>>m;for(ll i=1;i<=m;i++){ll a,b;cin>>a>>b;id[a]=id[b]=i;}stack<ll> st;st.push(0);for(ll i=1;i<=2*n;i++){if((i&1)==0){  //i是偶数if(id[i]==0) continue;if(st.top()==id[i]){    //出线段st.pop();par[id[i]][0]=st.top();dep[id[i]]=st.size();}else { //入线段st.push(id[i]);}}else {mincov[i]=st.top();}}K=log2(m+5);for(ll i=1;i<=K;i++){for(ll j=1;j<=m;j++){par[j][i]=par[par[j][i-1]][i-1];}}ll q;cin>>q;while(q--){ll a,b;cin>>a>>b;ll x=mincov[a],y=mincov[b];cout<<dep[x]+dep[y]-2*dep[lca(x,y)]<<"\n";}return 0;
}

http://www.dtcms.com/a/523866.html

相关文章:

  • 蓝色星球如何打造能与企业共同进化的灵活系统
  • 【问题】在VSCode中设置conda的Python环境
  • NGINX 负载均衡应用实战:从配置到策略的深度解析
  • 关于buildroot文件系统中rootfs的内容,该怎么增删(瑞芯微rv1126b)
  • Qt 入门简洁笔记:信号与槽
  • 算法入门---专题二:滑动窗口2(最大连续1的个数,无重复字符的最长子串 )
  • 手机摄像头如何识别体检的色盲检查图的数字和图案(下)
  • 政务系统信创改造中,金仓日志如何满足等保2.0三级审计要求
  • 记录一个监控网卡某个IP发送流量
  • Python-UnitTest框架
  • 模型-模型压缩:量化、剪枝、蒸馏、二值化
  • UE5 蓝图-12:pawn蓝图,轴映射-鼠标右键,补充轴映射与操作映射的区别。相机的旋转俯仰逻辑,伸缩逻辑,浮点差值函数 FInterpTo;
  • Vcenter7使用主机配置文件重置ESXI主机 root 密码
  • STL 容器:List
  • 做网站销售好累网上开店的货源渠道有哪些
  • 图像,视频Lora模型训练的Timestep Type时间步类型
  • 告别云端依赖!ComfyUI本地化视频生成实战教程+cpolar实战
  • Android16之如何获取APP、Bin进程的UID(二百六十三)
  • 在JavaScript / HTML中,无法通过开发者工具查看DOM元素中input里输入的密码
  • 像素塔防游戏:像素守卫者
  • 什么是栈?深入理解 JVM 中的栈结构
  • Go Web 编程快速入门 07.2 - 模板(2):解析与执行(含Demo)
  • 公司用wordpress建站用花钱大连网站设计开发
  • 建设网站需要下载神呢软件吗重庆企业网站推广公司
  • 常规面光源在工业视觉检测上的应用
  • 数据结构——直接插入排序
  • 如何开公司做网站素材免费网站
  • Spring Boot 配置优先级
  • 【架构】-- Nightingale:云原生监控告警平台的深度解析
  • 【Leetcode】