P8201 [传智杯 #4 决赛] [yLOI2021] 生活在树上(hard version)
2024-10-22 04:54:56
个人思路:
首先,题目可以转化为是否存在 \(a,b\) 路径上一点 \(u\),满足 \(w_u = dis{1,a} \oplus dis{1,b} \oplus w_{lca(a,b)} \oplus k\)。
存在等价于个数 \(\ge 1\),离线,差分一下给 \(a,b,lca(a,b),fa_{lca(a,b)}\) 打上四个查询标记,查询从 \(1,u\) 路径上 \(w = k\) 的点的个数。开个桶,进入一个节点 \(v\) 时 \(cnt_{w_v}\) 加上 \(1\),回溯时减去 \(1\)。
最新文章
- poj 1050 To the Max
- Apache配置站点根目录、用户目录及页面访问属性
- sqlserver 各种判断是否存在(表名、函数、存储过程等)
- Metadata Lock原理3
- Android支付接入(四):联通VAC计费
- hive的安装和升级
- 基于TI CC2650的IPv6 over BLE(BLEach) demo
- C#的String.Split 分割字符串用法详解的代码
- PJSUA2开发文档--第六章 媒体 Media类
- vue2.0里的路由钩子
- PAT 1152 Google Recruitment
- [UE4]引用Grabbable接口
- IIS 8.5详细错误
- Ubuntu下安装程序的三种方法(转)
- Expo大作战(三十四)--expo sdk api之LinearGradient(线性渐变),KeepAwake(保持屏幕不休眠),IntentLauncherAndroid,Gyroscope,
- String、StringBuffer和StringBulder
- CentOS 7 修改时区
- 不能将参数1从“const char []”转换为“LPCTSTR
- 利用国内镜像下载Android源码,并编译生成image镜像文件
- oracle取order by的第一条数据