首页 > 其他分享 >7/10奇怪的图题

7/10奇怪的图题

时间:2023-07-19 14:25:58浏览次数:38  
标签:图题 10 le 联通 times 定边 条边 奇怪

7/10

Connected Components?

题意:

给定 \(n\) 个点的完全图,删去 \(m\) 条边,求剩下的连通块个数和大小。

$n,m\le 2\times10^{5} $

普通 \(bfs\) 的瓶颈是会遍历所有的边,已经染色放进连通块的点是绝不会对遍历有贡献,那么我们将所有点都塞进一个 \(queue\) 里,然后每次遍历这个队列,如果起点与终点间的边没被删就将终点染色并且将终点从队列里删除。

这是一个比较玄学的复杂度,不会证,但是过了

Complete the MST

题意:

给定一个有 \(n\) 个点、有边权的完全图,其中给定其中 \(m\) 条边的边权,让你给剩下$ \frac{n*(n-1)}{2} -m $条边赋非负值,使所有边权的异或和为0,求最小的最小生成树边权和。

$n\le 2\times10^{5} $

显然,设给定边的异或和为 \(x\) ,那么肯定给其中 \(\frac{n*(n-1)}{2} -m-1\) 条边赋值为 \(0\) ,\(1\)条边赋值为 \(x\) 。
将为给定边权的边用Connected Components?的方式处理,设联通块数为 \(cnt\) ,那么:

  1. 如果 \(n-cnt < \frac{n*(n-1)}{2} -m\),意味着被选中的未给定边值一定为 \(0\) 。
  2. 如果 \(n-cnt = \frac{n*(n-1)}{2} -m\),意味着一开始全部的未给定边都被选中,和为 \(x\) 。

如果为 \(1\) ,则直接用并查集加入给定边直到联通块只有一个。
如果为 \(2\) ,则先用并查集加入给定边直到联通块只有一个,然后再在未被选中的给定边中寻找一条边使得:

\(1.\) 值小于 \(x\)。

\(2.\) 能将一条未给定的边替换掉且保持联通。

具体做法再建一个并查集,只连选中的给定边,看能否联通未联通的两个联通块,因为初始选定的边保证已经联通,而此条边能换的边都是给定边,而去掉未给定边的图上不同联通块间一定有未给定边,能将其替换,且保证最小了生成树。

Cactus Wall

题意:

给定一个 \(n\times m\) 的方格,每个格子都能种一个仙人掌,仙人掌不能在一个四联通上,已经有一些格子有仙人掌了,求能否将上下不联通(形成屏障)以及最优放置(数量最少)。

多测

$t\le 10^{3} $

\(n,m \le 2 \times 10^{5}\)

\(n \times m \le 4 \times 10^{5}\)

形成屏障可以转换成有一条从左侧到右侧只走斜对角的路径,那么只要建立超级源点和超级汇点,跑 \(dij\) 就行。

Keshi in Search of AmShZ

题意:

给定一个 \(n\) 个点的有向图,小 \(A\) 在 \(1\) ,小 \(B\) 在 \(n\) ,小 \(A\) 要由小 \(B\) 指挥走到 \(n\) 。小 \(B\) 可以花一点时间指挥小 \(A\) 随机走一条边或者删掉一条边,求最小的 \(t\) 值使经过 \(t\) 时间后小 \(A\) 一定在 \(n\)。

\(n,m \le 2 \times 10^{5}\)

由于一个点到 \(n\) 点的最小代价由其后继决定,我们倒着考虑,设 \(f_{u}\) 为从 \(u\) 到 \(n\) 的最小代价,那么有:

\(f_{u} =\underset{v\in nxt_{u}}{min} (f_{v}+\underset{p\in nxt_{u}}{\Sigma}[f_{p}>f_{v}]+1 )\)

用 \(dij\) 可以优化这个 \(dp\) ,因为 \(dij\) 每次取最小的 \(f_{v}\) 出来,每次都把 \(d_{u}\) 减一就能维护 \(\underset{p\in nxt_{u}}{\Sigma}[f_{p}>f_{v}]\) 了,而且取出的 \(f_{v}\) 已经不会被再松弛了。

标签:图题,10,le,联通,times,定边,条边,奇怪
From: https://www.cnblogs.com/shihoghmean/p/17565428.html

相关文章

  • 「解题报告」CF1067D Computer Game
    快国赛了,写点水题玩吧。首先容易有一个贪心策略:先以某种最优策略一直进行,直到成功一次后一直选择\(b_ip_i\)最大的进行。我们可以列出一个DP,设\(f_T\)表示在\(T\)时刻内期望最大收益,容易写出:\[f_T=\max\{p_i((T-1)v+a_i)+(1-p_i)f_{T-1}\}\]看起来就是可......
  • 1027_打印沙漏
     java:1importjava.io.*;23publicclassMain{4staticBufferedReaderin=newBufferedReader(newInputStreamReader(System.in));5staticPrintWriterout=newPrintWriter(newOutputStreamWriter(System.out));6publicstaticvoid......
  • 免费下载1000+工程建筑、设计领域资料,助力打造出高质量设计方案和汇报场景!
    作为一名工程设计、施工人员,设计方案制作、工程汇报场景搭建的情景再常见不过。日常需要的模型是必不可少的,但最令人头大的问题是如何寻找方案素材。想要表达的信息越多,素材获取就越是苦恼!有没有一款软件能够集方案三维汇报展示与模型数据下载为一体呢?当然有。图新说,作为国产三......
  • 代码随想录算法训练营第三十三天| 1049. 最后一块石头的重量 II 494. 目标和 474.一
    1049.最后一块石头的重量II思路:因为含有两个石头的相撞,所以需要把dp的目标值改成sum/2,然后取得这个目标值的最大值,然后对sum-2*target代码:1//要求:有多个石头,两两撞击,取得剩下的石头的最小值2//——》一定要碰到最后一个3//注意:4//1,x==y:两个粉碎,x<y:y=......
  • 代码随想录算法训练营第58天 | ● 739. 每日温度 ● 496.下一个更大元素 I - 第1
     第十章 单调栈part01 ●  739. 每日温度 ●  496.下一个更大元素 I    详细布置    739. 每日温度  今天正式开始单调栈,这是单调栈一篇扫盲题目,也是经典题。 大家可以读题,思考暴力的解法,然后在看单调栈的解法。 就能感受出单调栈的巧妙 ......
  • 代码随想录算法训练营第59天 | ● 503.下一个更大元素II ● 42. 接雨水 - 第10章
     第十章 单调栈part02 ●  503.下一个更大元素II ●  42. 接雨水    详细布置   503.下一个更大元素II  这道题和 739. 每日温度 几乎如出一辙,可以自己尝试做一做 https://programmercarl.com/0503.%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%......
  • 代码随想录算法训练营第60天 | ● 84.柱状图中最大的矩形 - 第10章 动态规划part03
     第十章 单调栈part03有了之前单调栈的铺垫,这道题目就不难了。  ●  84.柱状图中最大的矩形   今天是训练营最后一天,恭喜坚持两个月的录友们,接下来可以写一篇自己 代码随想录一刷的总结。好好回顾一下,这两个月自己的博客内容,以及自己的收获。  ......
  • 练习10.6
    用std::fill_n把一个int序列填充为0#include<iostream>#include<vector>#include<algorithm>#include<numeric>usingnamespacestd;intmain(intargc,char*argv[]){vector<int>v{1,2,3,4,5};std::fill_n(v.begin(),v.......
  • # 实验10
    实验10显示字符串问题显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能、我们应该提供最灵活的调用接口,使调用者可以决定显示的位置(行和列)、内容和颜色子程序描述名称:show_str功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。......
  • AtCoder Beginner Contest 310
    A-OrderSomethingElse#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongint32_tmain(){ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);intn,p,q;cin>>n>>p>>q;......