首页 > 其他分享 >ABC355

ABC355

时间:2024-05-28 21:00:05浏览次数:22  
标签:val bel 询问 枚举 ABC355 边权

E
将所有的下标作为点,建一张无向图。
当且仅当可以询问 \([l,r]\) 时,在点 \(l\) 和 \(r+1\) 之间连一条边。
可以发现能求出 \([L,R]\) 的和等价于 \(L\) 与 \(R+1\) 连通,且最少询问次数等于两点间最短路径边数。
具体实现是容易的。
F
边权很小,提示我们可以暴力枚举和替换边。
开10个并查集,\(bel_i\)表示所有边权不超过 i 的边的生成子图的连通性。初始状态显然。
询问时,从小到大枚举边权,设 \(val\) 为最小的使得 \(bel_{val}\) 中 \(u\) 和 \(v\) 连通的值。
不难发现 \(val\) 是 \(u->v\) 路径上边权最大的边。
若 \(w<val\),则用 \((u,v,w)\) 替换该边。否则不操作。
这样显然是最优的,因为肯定要替换差值最大的边。
G

标签:val,bel,询问,枚举,ABC355,边权
From: https://www.cnblogs.com/studentDL/p/18218871

相关文章

  • ABC355 D区间相交问题
    ABC355D区间相交问题题意给出n个区间,每个区间给出左端点(l)和右端点(r),判断有多少区间成对相交。分析如果我们直接暴力查找每个区间是否和别的区间相交,那么时间复杂度就是O(\(n^2\)),肯定是过不了的。考虑如何优化,通过题意,可以发现优化的关键在于区间相交的判定方式,对于任意两......
  • ABC355
    A.WhoAtetheCake?模拟代码实现a,b=map(int,input().split())ifa==b:print(-1)else:print(6-a-b)B.Piano2模拟代码实现#include<bits/stdc++.h>#definerep(i,n)for(inti=0;i<(n);++i)usingnamespacestd;usingP=pair<......
  • ABC355 A ~ D
    A可能写麻烦了,但是至少它对了。#include<bits/stdc++.h>#definegtgetchar#defineptputchartypedeflonglongll;constintMAXN=2e5+5;constintmod=998244353;llread(){ llx=0,f=1;charch=gt(); while(ch<'0'||ch>'......
  • ABC355 D
    D-IntersectingIntervals我们思考如何计算不交的线段数量首先总的线段如果全部相交那么线段数应为n*(n-1)/2那么对于每对r[i]<l[i]都为不交的线段所以我们需要计算不交的线段数同时删去自己本身点击查看代码#include<bits/stdc++.h>#defineintlonglong#defineall(......