2019暑期金华集训 Day3 图论
自闭集训 Day3
图论
NOI2019 D2T1
没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\)。
也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集(???)。
POI 2014/2015 某题
类似于GDOI2019,线段树或者堆直接做。
Gym101372 E
首先肯定要缩点。
给每个点赋一个随机权值,然后把每一个点的权值更新成能到的所有的点权值的min。
由于\([0,1]\)的\(n\)个随机权值的\(\min \)期望是\(\frac 1 {n+1}\),而我们现在已经知道了\(\frac 1 {n+1}\),于是可以解出\(n\)。
多做几遍取平均,就做完了。
SD省队集训 D1T1
首先,把每一条边都取一遍,但这样可能会使得某些点度数为奇数,不存在欧拉回路。
于是问题就变成给一个01串,有一些边可以使得两个点的权值都异或1,问把所有点的权值都变成0的最小代价。
由于边权很特殊,就可以直接做最小生成树(或者二分最大的权值然后瞎搞应该也可以)。
Hihocoder Challenge 28
考虑魔改Matrix Tree定理。
给每一条边的权值设成一个多项式:
\[
\sum_{i=0}^k w^i \frac 1 {i!} x^i
\]
然后直接插值就没了。
最小方差生成树
首先发现\(f(\sigma)=\sum_{i=1}^{n-1} (\sigma -w_i)^2\)必定在\(\sigma\)取到平均值的时候取到最小值,所以可以枚举\(\sigma\)然后做kruskal。
又发现kruskal只和边的大小关系有关,而大小关系只会变化\(m^2\)次,所以有了一个\(O(m^3\log m)\)的做法。
可以发现,每条边存在于最小生成树的时间一定是一段区间。我们只需要求出这个区间就可以得到答案。
对于一条边\(e\),什么时候才能被加进去?必须要对于每一个包含\(e\)的环上的边的最小值\(w\),都有\(\sigma >(w+w_e)/2\)的时候\(e\)才能被加进去。
什么时候会被删掉?其实也是同理,只要有一个环满足~~~就可以删掉。
所以用LCT动态维护最大生成树搞出\(l,r\),然后按时间跑一遍,就做完了。
某题
首先肯定要二分答案,然后把一个点四周四个小三角形拿出来。这些小三角形要满足对立的两个必须选恰好一个,而有重叠的不能选。
然后就做完了。
TCO Hard
限制等价于三个点两两不在\(Q\)的同一个子树里。
首先把1提为根,记\(f_{x,y}\)表示\(x\)是否在\(y\)的子树里。
于是我们有
\[
f_{x,p}=1\rightarrow f_{x,fa_p}=1\\
f_{x,p}
=0\rightarrow f_{x,son_p}=0\\
f_{x,1}=1\\
f_{x,s1}=1\rightarrow f_{x,s2...k}=0\\
f_{x,Q}=0\rightarrow f_{y/z,Q}=1\\
f_{x,son}=1\rightarrow f_{y/z,son}=0
\]
注意两个人是可以站在同一个位置的。
似乎就没了????
CF547D
掉线……
一开始看错了题,后面才知道原来棋子的位置都是不变的,只是要染色。
考虑把行列看做点,棋子看做边,那么就变成了一个二分图。
先想如果必须黑点白点相同该怎么办。此时每个点的度数都必须是偶数,然后就可以找出某一个欧拉回路的方案,然后把从左到右的边作为黑点,从右往左的作为白点。
如果可以相差1呢?度数是偶数的点还是必须要相等,而奇数的点就较为麻烦。题解给的做法是两边各建一个虚点,奇数的点向对面的虚点连边,如果两个虚点的度数也是奇数那么再互相连边,然后求欧拉回路即可。
某题
首先,如果贡献的不是\(m^2\)而是1,那么大家都会,就是\(2^{非树边条数}\)。
如果贡献的是\(m\),那么就可以枚举每一条边,观察这条边是不是桥边,然后乱搞。
贡献的是\(m^2\),那么仍然枚举两条边强制选。如果两条边里面有边是桥边,那么肯定没了。否则,如果删去两条边连通情况不改变,那么很容易搞。如果改变,那么就多了一个连通快,也很容易搞,但贡献不同了。
所以,我们就是要求有多少对边,使得他们不是桥边,而且删掉之后连通情况不改变。
对于某一对边,如果都是非树边那么显然不变;如果一条树边一条非树边,那么当且仅当那条树边只被那条非树边覆盖的时候连通情况改变;如果两条树边那么当且仅当两条边只被同一条非树边覆盖的时候连通情况改变。
于是有一个神奇做法:对于每条非树边随机一个权值(树边的初始权值为0),然后把它覆盖的这一条树上的链的值全都异或上自己的权值,那么就可以直接数权值相同的边的对数。
然后就没了。
2019暑期金华集训 Day3 图论的更多相关文章
- 2019暑期金华集训 Day3 字符串
自闭集训 Day3 字符串 SAM 考虑后缀树. SAM的parent树是反串的后缀树,所以后面加一个字符的时候相当于往串前面加一个字符,恰好多出了一个后缀. 于是可以以此来理解SAM. 每一条路径对 ...
- 2019暑期金华集训 Day7 分治
自闭集训 Day7 分治 主定理 由于我沉迷调题,这个地方没听课. 某些不等式 咕了 nth_element 使用快速排序的思想,选一个中间点,看左右有多少个. 期望复杂度\(O(n)\). 首先把一 ...
- 2019暑期金华集训 Day7 动态规划
自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数 ...
- 2019暑期金华集训 Day6 杂题选讲
自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...
- 2019暑期金华集训 Day6 计算几何
自闭集训 Day6 计算几何 内积 内积不等式: \[ (A,B)^2\le (A,A)(B,B) \] 其中\((A,B)\)表示\(A\cdot B\). (好像是废话?) 叉积 \[ A\tim ...
- 2019暑期金华集训 Day5 树上数据结构
自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查 ...
- 2019暑期金华集训 Day5 生成函数
自闭集训 Day5 生成函数 一般生成函数 无脑地把序列变成多项式: \[ \{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n \] 形式幂级数 生成函数是一种形式幂级数. ...
- 2019暑期金华集训 Day2 线性代数
自闭集训 Day2 线性代数 高斯消元 做实数时,需要找绝对值最大的作为主元,以获取更高精度. 在欧几里得环(简单例子是模合数)意义下也是对的.比如模合数意义下可以使用辗转相除法消元. 欧几里得环:对 ...
- 2019暑期金华集训 Day1 组合计数
自闭集训 Day1 组合计数 T1 \(n\le 10\):直接暴力枚举. \(n\le 32\):meet in the middle,如果左边选了\(x\),右边选了\(y\)(且\(x+y\le ...
随机推荐
- Arm-Linux 移植 mtd-utils 1.x
有关文章:<mtd-utils 的 使用> 背景: 关于在公司的生产环境有关.不希望每次都在uboot下面做nand flash 的烧写:也觉得使用U盘升级的方法比较慢,而且有关的驱动不是 ...
- Fiddler抓取https原理
首先fiddler截获客户端浏览器发送给服务器的https请求, 此时还未建立握手.第一步, fiddler向服务器发送请求进行握手, 获取到服务器的CA证书, 用根证书公钥进行解密, 验证服务器数据 ...
- 设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)
登录 保存密码 安全 加密 最近发现群内大伙对用Hbuilder做的APP怎么做登录功能以及维护登录状态非常困惑,而我前一段时间正好稍微研究了一下,所以把我知道的告诉大家,节约大家查找资料的时间. 你 ...
- openfeign与gateway中的httpClient类声明冲突
启动spring cloud中的网关,报错: ***************************APPLICATION FAILED TO START*********************** ...
- 将网站升级为https并自动续期Https证书。
Let's Encrypt Let's Encrypt 是一个由Internet Security Research Group (互联网安全研究组)提供的免费,自动化和开放的证书颁发机构. 它秉承着 ...
- [NOIP11.1模拟赛]补番报告
Preface 昨天开始补某科学的超电磁炮S 感觉今天就好了点,炮姐赛高 T1 一开始一直想欧拉定理&ex欧拉定理,结果估计70分,数组开小了GG,看了正解发现是我学傻了 T2 一看就是数据结 ...
- iOS - SceneKit 3D引擎初探
最近到处搜集资料研究3D最后还是决定锁定OC框架,找到的学习资料随后慢慢整理 SceneKit 是一个OC 框架,开始之前,先熟悉一下SceneKit 的三维坐标系: 很清楚的看到,SceneKit ...
- 由于找不到MSVCP140.dll,无法继续执行代码。重新安装程序可能会解决此问题。
msvcp140.dll文件下载,解决找不到msvcp140.dll的问题: 如果您的系统是64位的请将32位的dll文件复制到C:\Windows\System32目录 如果您的系统是64位的请将3 ...
- [LeetCode] 392. 判断子序列 ☆(动态规划)
https://leetcode-cn.com/problems/is-subsequence/solution/java-dp-by-zxy0917-5/ 描述 给定字符串 s 和 t ,判断 s ...
- Android笔记(三) 使得Activity之间可以跳转---Intent
什么是Intent 一个APP肯定不单单由一个Activity构成,我们在使用过程中,经常需要在多个Activity中跳转,Android中Intent可以帮我们来完成在各个Activity中跳转的功 ...