首页 > 其他分享 >再谈 qbxt2023国庆刷题 Day7 T2 树

再谈 qbxt2023国庆刷题 Day7 T2 树

时间:2023-10-07 11:37:34浏览次数:57  
标签:记录 Day7 T2 数组 ans 倍增 id qbxt2023

T2

倍增+换根即可,但赛时难写

赛时想得线段树二分,也可

from:https://www.cnblogs.com/fox-konata/p/17742669.html

回头一看老师代码,发现换根换的非常神奇,长见识了

方法0:

第一次思考,以为要记录走排名为 \(a_x\) 和 \(a_x+1\) 的两个倍增数组,但发现并不好合并,也许可以憋出来,但还是寄掉了

方法1:

xjk的思路是这样的:记 \(top_i\) 表示从 \(i\) 只向上跳最远距离,然后维护一个 \(sum_{i,j}\) 的倍增数组记录向上跳的和。而跳到顶部后还可能继续向下跳,遂记录 \(dwn_i\) 表示从 \(i\) 向下跳最远距离。我们也可以再开一个倍增数组记录向下跳的和,但这很麻烦,不如直接用总和 \(-\) 向上跳的和,复杂度 \(O(n \log n)\)

方法2:

老师的思路是这样的:对于 \(x\) 的儿子 \(y\) ,考虑当 \(y\) 子树内的询问跳到 \(x\) 时 \(x\) 的倍增数组会变成什么样。怎么修改?其实暴力重构即可

这么说比较难以理解,给一下代码:

void dfs2(int u){// 表示当前情况所有倍增数组都是以 u 为根的情况
	for(auto i : ask[ u ]){
		i.V -= b[ u ]; if(i.V < 0){ ans[ i.id ] = u; continue; }
		ans[ i.id ] = e[ u ][ i.t - 1 ]; solve(ans[ i.id ], i.V);
	}// 处理询问,因为当前以 u 为根, solve 里直接跳即可
	for(auto v : e[ u ]){ if(v == fa[ u ]) continue; // 重点,换根
		int nxt = e[ u ][ a[ u ] - 1 ]; if(v <= nxt) nxt = e[ u ][ a[ u ] ]; // 把 v 换成根时走哪个点
		jp[ 0 ][ u ] = nxt;
		For(i, 1, lg[ n ]){
			jp[ i ][ u ] = jp[ i - 1 ][ jp[ i - 1 ][ u ] ];
			sm[ i ][ u ] = sm[ i - 1 ][ u ] + sm[ i - 1 ][ jp[ i - 1 ][ u ] ];
		} // 暴力重构
		dfs2(v); // 递归计算
	}
	if(!a[ u ]) return ;
	int nxt = e[ u ][ a[ u ] - 1 ]; if(fa[ u ] <= nxt) nxt = e[ u ][ a[ u ] ]; // 还原回去
	jp[ 0 ][ u ] = nxt;
	For(i, 1, lg[ n ]){
		jp[ i ][ u ] = jp[ i - 1 ][ jp[ i - 1 ][ u ] ];
		sm[ i ][ u ] = sm[ i - 1 ][ u ] + sm[ i - 1 ][ jp[ i - 1 ][ u ] ];
	}
}

复杂度也是 \(O(n \log n)\)

标签:记录,Day7,T2,数组,ans,倍增,id,qbxt2023
From: https://www.cnblogs.com/fox-konata/p/17745874.html

相关文章

  • 人事管理系统 SpringBoot2+MyBatis+MySQL5.7
    人事管理系统一、系统介绍本系统为人事管理系统,系统分为七大模块:绩效考核,招聘管理,档案管理,工资管理,考勤管理,培训管理,系统管理。可满足小企业日常办公。本系统最大特色是有强大和灵活的权限控制功能,所有菜单,按钮功能均可由管理通过配置来控制。系统默认有四个角色:管理员,财务专......
  • 就业管理系统 SpringBoot2+MyBatis+MySQL5.7
    就业管理系统一、系统介绍本系统为就业管理系统,主要围绕高校毕业生的毕业情况进行跟踪和分析,为学校领导对专业设置优化,为高校毕业生就业方向提供参考。系统分为六大模块:就业管理,招聘咨询,通告管理,学院管理,师生管理,系统管理。系统默认有三个角色:管理员,老师,学生用户管理员(admin......
  • GJOI 2023.10.5 T2 假期计划Ⅱ
    GJOI2023.10.5T2假期计划Ⅱ题意:给出一个有\(n\)个点的有向图,每点到另一点都有一条有向边,边有权值。现有\(n^2\)次操作,每次会删去一些边,问每次删去后从\(1\)号点到\(n\)号点经过恰好\(k\)条边的最短路,若无法到达输出\(-1\)。\(n\le300,k\le8\)输入:34104......
  • qbxt2023国庆刷题 Day6 ~ Day7
    Day6\(100+30+100+0,rk3\),考成这样还能\(rk3\),好怪啊虽然但是\(T3\)是在\(oeis\)上找的,虽然写了随机数但还是运气好过掉了\(T2\)应该是写寄了吧,感觉自己做法并没有什么问题T1比较典的题,并查集维护下一个没被删的点即可复杂度\(O((n+Q)\alpha(n))\)T2题目里的同......
  • 题解 P2674 《瞿葩的数字游戏》T2-多边形数
    题目描述给你一个正整数数\(n\),问你它是不是多边形数\(K\),如果是,设\(K_1\)是最小的\(K\),\(K_2\)是次小的\(K\),输出\(K_1\)和\(K_2\)。具体思路我们主要来看上面这张表里有什么规律。性质1:\(1\)是任何一个多边形数。性质2:\(2\)不是任何一个多边形数。性......
  • 掌握全局,捕捉瞬间:Snagit2023-专业屏幕录制与截图软件
    Snagit2023是一款功能强大的屏幕录制与截图软件,为您带来全新的视觉体验和高效的屏幕操作。无论您需要记录屏幕操作、制作教程视频,还是与他人分享屏幕内容,Snagit2023都能满足您的需求。→→↓↓载Snagit2023mac版一、高清屏幕录制,流畅捕捉每一个细节Snagit2023支持高清无损的......
  • NOIP2023 国庆集训 A 组 Day7
    T1思路:因为只有三个串故枚举其中一个为调换的串,再枚举k验证即可。T2思路:正着不好做,考虑反着做。这样就不会覆盖之前的。赛时没想到这个常见套路,正难则反。T3事实上只有一种情况,故只需倒着枚举遇到a统计答案。使用一个变量sum来记录遇到下一个a的次数如果枚举到b,sum+=1。......
  • T2回家(home)题解
    T2回家(home)现在啥也不是了,虽然会了逆元,但是对期望概率题还是一窍不通,赛时相当于只推出了\(n=1\)的情况,结果运用到所有情况,理所应当只有20分。题目描述小Z是个路痴。有一天小Z迷路了,此时小Z到家有NN个单位长度。小Z可以进行若干次行动,每次行动小Z有\(\frac12\)的概率向......
  • chat2db教程:根据对话内容生成SQL语句
    准备示例表--学生信息表droptableifexistsSTUDENT;CREATETABLEstudent(idINTPRIMARYKEYAUTO_INCREMENTCOMMENT'学生ID',nameVARCHAR(50)NOTNULLCOMMENT'学生姓名',genderVARCHAR(10)NOTNULLCOMMENT'学生性别',birthdayDATEN......
  • 在 SDXL 上用 T2I-Adapter 实现高效可控的文生图
    T2I-Adapter是一种高效的即插即用模型,其能对冻结的预训练大型文生图模型提供额外引导。T2I-Adapter将T2I模型中的内部知识与外部控制信号结合起来。我们可以根据不同的情况训练各种适配器,实现丰富的控制和编辑效果。同期的ControlNet也有类似的功能且已有广泛的应用。然......