首页 > 其他分享 >Pink Floyd

Pink Floyd

时间:2024-01-18 21:58:04浏览次数:30  
标签:Pink 连通 一个点 拓扑 粉色 Floyd 考虑 分量

题目链接:https://codeforces.com/problemset/problem/1142/E

*3500

基本上复读其他题解?因为不知道怎么想到的。

首先考虑只有绿的边的情况。

竞赛图有一些很好的性质link

根据上面链接中的定理1,我们考虑将最终的竞赛图强连通缩点。由于拓扑序小的点对于每一个拓扑序大的点都有连边,我们考虑一种做法:维护一个当前可能成为最后答案的集合 \(S\)。每次从 \(S\) 中取出两点,询问他们的边的指向,将被指向的点删除。

考虑这种做法的正确性。首先最后 \(S\) 中剩下的那一个点一定是拓扑序最小的强连通分量中的一点。这可以由定理1得到。比方说,对于每一条边 \(u \to v\),如果 \(u\) 和 \(v\) 是属于同一个强连通分量,那么显然这么取可以让 \(u\) 和 \(v\) 联通。这样取下去每一个连通块内都会被缩成强连通分量。我们可以任意保留 \(u\) 或者 \(v\),于是这部分就是对的。如果 \(u\) 和 \(v\) 不属于同一个强连通分量,那么有拓扑序小的强连通块连向拓扑序大的连通块。所以我们保留 \(u\) 就是一定对的。

接下来考虑粉色边的情况。这种情况下,如果我们再钦定答案为全集,这时候我们不能询问粉色的边,就会出现问题。从特殊情况入手,假设粉色边构成了一张有向无环图,那么非常好办,我们可以臆想我们从所有入度为零的点开始按照拓扑序的顺序进行了若干次询问,然后所有粉色边就没了。剩下的情况就是有粉色边构成了若干强连通分量。这时候考虑缩点,把所有强连通分量缩成一个点。考虑什么情况下才会询问到粉色的边,发现其实你只需要保证在同一个强连通分量内的点不同时出现在 \(S\) 中即可。所以我们选一个点代表一个联通块,当一个强连通分量中的那个点被删去后,我们再把其中任意一个其它的点放入 \(S\) 中即可。

这样子做由于每次都会删掉一个点,所以最多 \(n - 1\) 次询问。

实现上不用很麻烦,其实只需要删去一些能让粉色边构成环的粉边即可。

code

感谢 @gdf_yhm 教我做题。

最后,请容许我在这里致敬一下伟大的摇滚乐队 Pink Floyd。啥都不说了 ,平克·佛洛依德牛皮!

标签:Pink,连通,一个点,拓扑,粉色,Floyd,考虑,分量
From: https://www.cnblogs.com/WRuperD/p/17973493

相关文章

  • 黑马pink css8 高级
    精灵图使用核心总结:字体图标的优点和不足:利用边框构建三角形:鼠标样式:取消表单轮廓线:outline:0outline:none禁止更改文本框大小:resize:none实现图片(行内元素或行内块元素)和文本的垂直居中对齐:vertical-align:middle;解决图片底部默认空白缝隙的问题单行文本溢......
  • 黑马pink css7
    定位的作用1:让盒子自由地在某个盒子内移动位置或者固定屏幕中的某个位置,并且可以压住其他盒子。定位=定位模式+边偏移定位模式用于指定一个元素在文档中的定位方式。边偏移则决定了该元素的最终位置。定位模式:position:static、relative、absolute、fixed静态定位static......
  • 洛谷B3611 【模板】传递闭包 floyd/bitset
    目录floydbitset优化题目链接:https://www.luogu.com.cn/problem/B3611参考题解:https://www.luogu.com.cn/blog/53022/solution-b3611floyd#include<bits/stdc++.h>usingnamespacestd;constintmaxn=101;intn,f[maxn][maxn];intmain(){scanf("%d"......
  • 洛谷B3647 【模板】Floyd 题解 floyd算法 求 多源多汇最短路
    题目链接:https://www.luogu.com.cn/problem/B3647floyd算法:https://oi-wiki.org/graph/shortest-path/#floyd-算法示例程序:#include<bits/stdc++.h>usingnamespacestd;constintmaxn=101;intn,m,f[maxn][maxn];intmain(){scanf("%d%d",&n......
  • 黑马pink css6
    盒子的圆角边框:圆形和圆角矩形的设置方法:盒子阴影:不占用空间文字阴影:用得不多网页布局的三种方式:标准流:占用一行或共用一行浮动定位实际开发要用这三种方式网页布局第一准则:多个块级元素纵向排列用标准流,多个块级元素横向排列用浮动浮动:将盒子移到一边,直到左边缘或右......
  • Floyd判联通(传递闭包) & poj1049 sorting it all out
    Floyd判联通(传递闭包)Floyd传递闭包顾名思义就是把判最短路的代码替换成了判是否连通的代码,它可以用来判断图中两点是否连通。板子大概是这个样的:for(intk=1;k<=n;k++){ for(inti=1;i<=n;i++){ for(intj=1;j<=n;j++){ //把数值计算替换成逻辑运算——就一行,非......
  • 前端学习笔记DAY3 HTML5基础(3)(b站pink老师)
    ​二.HTML标签6.表格标签1.1表格的主要作用表格不是用来布局页面的,而是用来展示数据的。1.2表格的基本语法<table><tr><td>单元格内的文字</td>...</tr>...</table>(1).<table></table>是用于定义表格的标签。(2).<tr></tr>标签用于定义表格中的行,必须嵌套在......
  • class065 A星、Floyd、Bellman-Ford与SPFA【算法】
    class065A星、Floyd、Bellman-Ford与SPFA【算法】2023-12-919:27:02算法讲解065【必备】A星、Floyd、Bellman-Ford与SPFAcode1A*算法模版//A*算法模版(对数器验证)packageclass065;importjava.util.PriorityQueue;//A*算法模版(对数器验证)publicclassCode01_AStarAlgori......
  • Floyd良序集法证明程序终止性
    1.设断点并建断言(1)开始处A:(2)循环主干处B,C等:2.取良序集并定义函数(1)良序集:一般为<N,<>(与证良函数有关)(2)函数:为存在循环的断点定义函数f(x)(注意:f(x)需要随着循环递减)找随循环递减的f(x)的技巧:看变化量和跳出循环的判断条件中的变量尝试单个变量......
  • 前端学习笔记DAY2 HTML5基础(2)(b站pink老师)
    二.HTML标签4.HTML常用标签4.1标签语义学习标签的重点是记住每个标签的语义。就是指标签的含义,即这个标签是用来干嘛的。根据标签的语义,在合适的地方给一个最为合理的标签,可以让页面结构更清晰。※4.2标题标签<h1>-<h6>HTML提供了6个等级的网页标题,即<h1>-<h6>。......