首页 > 其他分享 >CF825G - Tree Queries

CF825G - Tree Queries

时间:2023-02-23 20:48:32浏览次数:41  
标签:min 黑点 res lca Queries Tree cin dfs CF825G

现在有 \(n\) 次操作,每次将一个点设为黑色,或者查询:从当前点到任意黑点路径上最小值的最小值。保证第一次操作是设置黑点。强制在线。

我们考虑这样一个过程,我们把第一次操作的点设为根,从根出发进行 dfs,找到每个点到根的最小值 \(a_x\)。这样如果不增加新的黑点,查询 \(x\) 点的答案就是 \(a_x\)。

然后考虑加入了新黑点 \(y\),询问 \(x\),我们发现答案就是 \(\min(a_y,a_x)\),因为 \(a_y\) 造成的贡献可以分成两部分 \(y\rightarrow lca(x,y)\) 和 \(lca(x,y)\rightarrow root\)。其中第一部分是从 \(x\) 到 \(y\) 可以经过的,第二部分是 \(x\) 到 \(root\) 可以经过的。

而路径上的点又分成 \(y\rightarrow lca(x,y)\) 和 \(x\rightarrow lca(x,y)\),分别被 \(a_y\) 和 \(a_x\) 包括了。也就做到了不重不漏。

那么,假设当前的黑点点集是 \(S\),答案就是 \(\min(\min_{i\in S}a_i,a_x)\)。

动态记录所有黑点的最小值即可。

int n,a[1000005],q,t,x,ans=0,res,a,b;
vt<int>vv[1000005];
inline void dfs(int x,int p){
	a[x]=min(x,a[p]);
	for(auto j:vv[x])if(j!=p){
		dfs(j,x);
	}
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);a[0]=1e9;
	cin>>n>>q;
	rp(i,n-1){
		cin>>a>>b;
		vv[a].pb(b);
		vv[b].pb(a);
	}
	cin>>t>>x;x=(x+0)%n+1;
	dfs(x,0);
	res=x;
	rd(_,q-1){
		cin>>t>>x;
		x=(x+ans)%n+1;
		if(t==1)res=min(res,a[x]);
		else {
			ans=min(res,a[x]);
			cout<<ans<<'\n';
		}
	}
	return 0;
}
//Crayan_r

标签:min,黑点,res,lca,Queries,Tree,cin,dfs,CF825G
From: https://www.cnblogs.com/jucason-xu/p/17149327.html

相关文章

  • dev控件-treelist多列显示
    经测试,如果需要多列显示,必须通过设计器配置KeyFieleName和ParentFieldName两个字段,通过代码无效。可以通过设计界面的AddColumn菜单,为TreeList添加多列,并绑定相关的字段,......
  • ARC121F Logical Operations on Tree【DP】
    给定一棵树,给每个点填\(0\)或\(1\),给每条边填\(\text{AND}\)或\(\text{OR}\),求有多少种填法满足存在一种缩边的顺序,使得每次把一条边的两个端点缩成一个点,权为原端点......
  • sourcetree中本地项目提交到远程仓库的具体方法
    转:https://pcedu.pconline.com.cn/1533/15337252.htmlsourcetree中本地项目提交到远程仓库的具体方法2022-08-2516:45 出处:其他 作者:佚名 能否取代智能手机后的新......
  • SourceTree跳过注册方法
    1,首先下载并安装好git程序。进入登录或注册bitbucket的界面,先别急着操作,继续往下看。2.关闭上述安装窗口,打开%LocalAppData%\Atlassian目录(win+r打开命令模式,把%LocalAp......
  • TreeMap的使用
    packageedu.wtbu;importjava.util.Comparator;importjava.util.Map;importjava.util.Set;importjava.util.TreeMap;publicclassDemo01{publicstaticvoidma......
  • TreeSet的使用以及Comparator接口
    packageedu.wtbu;importjava.util.Comparator;importjava.util.Iterator;importjava.util.TreeSet;publicclassDemo01{publicstaticvoidmain(String[]args......
  • [ARC156C] Tree and LCS
    ProblemStatementWehaveatree$T$withverticesnumbered$1$to$N$.The$i$-thedgeof$T$connectsvertex$u_i$andvertex$v_i$.Letususe$T$todefine......
  • D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths (cf741D)
    D.Arpa’sletter-markedtreeandMehrdad’sDokhtar-koshpaths(cf741D)tag:dsuontree,dp题目链接题意:给你一棵树,每一条边的权值是'a'到'v'的字母,求在每一个点......
  • LC 572. Subtree of Another Tree
    572.SubtreeofAnotherTree思路与题解这是一道挺有意思的问题,有三种解法,其中第二种是KMP算法的应用。筛法的原理参见204.CountPrimes。解法1:暴力dfs法。直接暴力......
  • CF1060F Shrinking Tree
    题面传送门考虑枚举最后剩下的点,然后令它为根。对于每个不是根的点,我们记\(ti_i\)表示\(i\)是什么时候和它的父亲合并的,\(op_i\)表示\(i\)在和父亲合并的时候是不......