CodeForces 1103C. Johnny Solving
题目简述:给定简单(无自环、无重边)连通无向图$G = (V, E), 1 \leq n = |V| \leq 2.5 \times 10^5, 1 \leq m = |E| \leq 5 \times 10^5$,保证任意节点的度数$\geq 3$。给定参数$1 \leq k \leq n$,要求完成以下任务之一:
1. 找到一条包含至少$\frac n k$个节点的简单路径。
2. 找到$k$个简单环,使得
2.1. 每个环包含少于$\frac n k$个节点,且包含的节点个数不得被$3$整除;
2.2. 每个环都存在一个代表节点,这个节点不在其他环中出现。
解:code
考虑图$G$的DFS树$T$。
1. 若$T$中存在深度$\geq \frac n k$的节点(根节点深度为$1$),则找到了一条包含至少$\frac n k$个节点的简单路径,完成任务1。
2. 不然(即,树$T$的深度$< \frac n k$),$T$存在至少$k$个叶节点(设$T$有$x$个叶节点,则
$$n = |V| \leq \sum_{v \text{ is a leaf of } T} \text{depth}(v) < x \frac n k, $$
从而$x > k$)。我们可以通过其中$k$个叶节点构造$k$个满足条件的简单环。
设$v \in V$为$T$的某个叶节点,注意到$v$在$G$中的度数$\geq 3$,故存在两个不同的节点$x, y \in V$,他们都不是$v$的父节点且$(v, x), (v, y) \in E$。则$x$和$y$均是$v$在$T$中的祖先(DFS树的性质)。不妨设$\text{depth}(x) > \text{depth}(y)$。
考虑以下三个环:
a) $v, \text{father}(v), \dots, x$,长度为$l_a = \text{depth}(v)-\text{depth}(x)+1$;
b) $v, \text{father}(v), \dots, y$,长度为$l_b = \text{depth}(v)-\text{depth}(y)+1$;
c) $v, x, \text{father}(x), \dots, y$,长度为$l_c = \text{depth}(x)-\text{depth}(y)+2$。
这三个环的长度均$ < \frac n k$,且不可均为3的倍数(设环a和环b长度均为3的倍数,则环c的长度$ l_c = l_b-l_a+2 \equiv 2 \pmod 3 $不为3的倍数)。完成任务2。
CodeForces 1103C. Johnny Solving的更多相关文章
- Codeforces 1103 C. Johnny Solving
Codeforces 1103 C. Johnny Solving 题目大意: 有一张 \(n\) 个点 \(m\) 条边的简单无向图,每个点的度数至少为 \(3\) ,你需要构造出两种情况之一 一条 ...
- Johnny Solving CodeForces - 1103C (构造,图论)
大意: 无向图, 无重边自环, 每个点度数>=3, 要求完成下面任意一个任务 找一条结点数不少于n/k的简单路径 找k个简单环, 每个环结点数小于n/k, 且不为3的倍数, 且每个环有一个特殊点 ...
- CF1103C Johnny Solving (Codeforces Round #534 (Div. 1)) 思维+构造
题目传送门 https://codeforces.com/contest/1103/problem/C 题解 这个题还算一个有难度的不错的题目吧. 题目给出了两种回答方式: 找出一条长度 \(\geq ...
- Codeforces 1361C - Johnny and Megan's Necklace(欧拉回路)
Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉这个题作为 D1C 还是蛮合适的-- 首先不难发现答案不超过 \(20\),所以可以直接暴力枚举答案并 check 答案是否 ...
- Codeforces Round #534 (Div. 2)
B. Game with string 题意: 给出一个字符串s只包括小写字母.当轮到一个玩家的时候,他可以选择两个连续且相等的字母并且删除它.当一个玩家没得删的时候他就输了. 题解: 乍一看有点懵, ...
- Codeforces Round #534 (Div. 2) Solution
A. Splitting into digits Solved. #include <bits/stdc++.h> using namespace std; int n; void sol ...
- 20191028 Codeforces Round #534 (Div. 1) - Virtual Participation
菜是原罪. 英语不好更是原罪. \(\mathrm{A - Grid game}\) 题解 \(4 \times 4\) 的格子,两种放法. 发现这两种在一起时候很讨厌,于是强行拆分这个格子 上面 \ ...
- Pursuit For Artifacts CodeForces - 652E (Tarjan+dfs)
Pursuit For Artifacts CodeForces - 652E Johnny is playing a well-known computer game. The game are i ...
- Solution -「构造」专练
记录全思路过程和正解分析.全思路过程很 navie,不过很下饭不是嘛.会持续更新的(应该). 「CF1521E」Nastia and a Beautiful Matrix Thought. 要把所有数 ...
随机推荐
- 统计显著性(Statistical significance)
显著性,又称统计显著性(Statistical significance), 是指零假设为真的情况下拒绝零假设所要承担的风险水平,又叫概率水平,或者显著水平. [1] 显著性的含义是指两个群体的态度之 ...
- [WASM Rust] Create and Publish a NPM Package Containing Rust Generated WebAssembly using wasm-pack
wasm-pack is a tool that seeks to be a one-stop shop for building and working with Rust generated We ...
- NDK编译STL
方法: 1.在jni目录下新建Application.mk; 加入 APP_STL := stlport_static 右边的值还可以换成下面几个: system - 使用默认最小的C++运行库, ...
- HDU 1248 寒冰王座 (水题的N种做法!)(含完全背包)
寒冰王座 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- Hibernate 配置C3P0 连接池
第一步在hibernate.cfg.xml配置 <!-- 连接池 --> <property name="hibernate.connection.provider_cla ...
- Java基础:执行时异常和非执行时异常
1.Java异常机制 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为全部异常的超类. Java中的异常分为两大类:错误Error和异常Exception.Jav ...
- Spyder的汉化
我准备写下spyder的汉化问题:对于英文大佬,从来没得汉化问题,但是对于新手和英语差的来说,汉化还是有必要,至少用汉化过得软件能快速掌握软件等.后期会用软件了在慢慢习惯英文也不迟...哈哈哈哈.本文 ...
- php利用cookie防止重复提交解决办法
原理:如果数据通过了上边的两次验证,说明数据是合法有效的数据,这时候我们把提交的数据串接为一个字符串,并用MD5加密后得到一个MD5的值. 接着我们把这个值通过Cookie放进客户端,当用户下一次提交 ...
- 锁粒度 Deadlocks
锁粒度 MySQL :: MySQL 5.7 Reference Manual :: 14.5.2.4 Locking Reads https://dev.mysql.com/doc/refman/5 ...
- yum报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
原因:学python的时候,把centos7自带的python2.7改成了python3.6.2.而yum使用的是python2,所以会出现yum报错. 解决方法: 在文件/usr/bin/yum./ ...