CF983E NN country 题解
题意
给定一棵树和若干条路线,每条路线相当于 之间的路径,途径路径上的每个点。
给出若干个询问,每次询问从 到 至少需要利用几条路线。
【资料图】
Solution
考虑子问题,两个询问点在同一条链上,这样问题就类似 [SCOI2015] 国旗计划,只不过这道题是环上问题,但思路相同。
对于链,考虑贪心,对于每一个点 跳到能到达的最远的点 ,容易想到下一步应当是跳到 ,故考虑倍增优化这个不断往前跳的过程。定义 为点 i 跳 步能到达的最远节点,可以用 复杂度的时间来处理出 数组。
考虑树上的两个点,对于 是 的祖先节点( 为 祖先节点时同理)的情况,同链上情况处理。
对于两个点分别不是对方父亲节点的情况,考虑将问题拆分为 到 和 到 两个问题处理。令 为 跳到 的最小步数, 为 跳到 的最小步数, 为 向上跳 步到达的深度最浅的节点,即跳到 的前一个节点, 同理。考虑两种情况:
有一条路线同时经过 和 ;
不存在一条路线同时经过 和 。
对于第二种情况,答案即为 ,对于第一种情况,答案为 。问题转化为如何维护是否存在一条路线经过两个点。
发现对于一个节点 ,只要 的子树中存在一个点,使得存在一条从其出发的路径在 的子树中结束,则存在一条路径同时经过 和 。考虑通过 dfs 序转化为区间问题,令 为节点 的子树大小,则问题进一步转化为询问是否存在一条路径 使得 。考虑二维数点,即查询平面上矩形 是否有点。将询问离线排序并用树状数组维护即可。
有个小细节:由于 和 在此题中是等价的,故在插入点时都应插入,否则可能会统计不到这个点。
其他具体实现细节见代码,以及由于我不会倍增求 lca,所以写了个树剖。
总时间复杂度应该是 的,但是有巨大常数,可以通过本题。
code
- CF983E NN country 题解
- 银行卡突然多30万,竟是手机开了这项功能,骗子“帮”她在贷款!
- TVB实力女星大赞另一半!自曝两人交往趣闻,曾遭两男星无情背叛
- 派生科技:公司为奇瑞捷豹路虎汽车有限公司的供应商,暂未给LUXEED车型提供压铸配件
- 经常痛经的人有救了:90%可以用4种药缓解
- 三星为 Galaxy S23 推出新的 One UI 6.0 Beta 更新
- 探探怎么取消自动续费?(探探怎么取消自动续费)
- 北向资金净流出超40亿元
- 美丽中国建设取得显著成效 实现可持续自然教育传承
- 以“三观”教育助学生树立正确就业观念
- psp 3000多少钱(psp3000价格)
- 身先士卒勇担当 防汛一线践初心
- 美的置业发行两笔中票合计9.2亿元 房企融资及偿债能力分化加剧
- 内马尔上赛季非点球进球助攻比1.28,五大联赛最佳
- 顺威股份上半年营收增长15% 逐步拓展汽车零部件等成长性领域
- 大乐透开奖号码23094期:一注8+2复式追加,后区本期要买01+07
- 400万元宾利车被4S店维修后地垫被发黄、变脏,4S店拒绝更换地垫,当事人:本来要当婚车用,至今没协商成功
- 葬天荒(关于葬天荒简述)
- 东方园林:公司经营正在逐步改善中
- 光电股份:业绩说明会定于8月23日举行
- 山东汶上县刘楼镇:“乡村振兴合伙人”蹚出“共富农场”新路径
- 王振澳单挑右路走廊!腿上的口子令人心疼,战河南曼巴回归,还有一个马里奥
- 违法转包工程项目 谁应承担工伤保险责任?
- Meta新应用用户流失79% 用户减少75%
- 日媒:高市早苗等多名日本政客参拜靖国神社
- 美国夏威夷毛伊岛大火死亡人数升至96人 灭火工作仍在继续
- 厄瓜多尔一政党领导人遭枪杀
- 电脑如何设置快捷方式迅速进入睡眠的状态 电脑快捷键进入休眠状态
- oppo A56 如何添加nfc交通卡
- 男子存400万到期后取钱被告知存单是假的,法院判赔偿本金及利息