题目简述:给定简单(无自环、无重边)连通无向图$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的更多相关文章

  1. Codeforces 1103 C. Johnny Solving

    Codeforces 1103 C. Johnny Solving 题目大意: 有一张 \(n\) 个点 \(m\) 条边的简单无向图,每个点的度数至少为 \(3\) ,你需要构造出两种情况之一 一条 ...

  2. Johnny Solving CodeForces - 1103C (构造,图论)

    大意: 无向图, 无重边自环, 每个点度数>=3, 要求完成下面任意一个任务 找一条结点数不少于n/k的简单路径 找k个简单环, 每个环结点数小于n/k, 且不为3的倍数, 且每个环有一个特殊点 ...

  3. CF1103C Johnny Solving (Codeforces Round #534 (Div. 1)) 思维+构造

    题目传送门 https://codeforces.com/contest/1103/problem/C 题解 这个题还算一个有难度的不错的题目吧. 题目给出了两种回答方式: 找出一条长度 \(\geq ...

  4. Codeforces 1361C - Johnny and Megan's Necklace(欧拉回路)

    Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉这个题作为 D1C 还是蛮合适的-- 首先不难发现答案不超过 \(20\),所以可以直接暴力枚举答案并 check 答案是否 ...

  5. Codeforces Round #534 (Div. 2)

    B. Game with string 题意: 给出一个字符串s只包括小写字母.当轮到一个玩家的时候,他可以选择两个连续且相等的字母并且删除它.当一个玩家没得删的时候他就输了. 题解: 乍一看有点懵, ...

  6. Codeforces Round #534 (Div. 2) Solution

    A. Splitting into digits Solved. #include <bits/stdc++.h> using namespace std; int n; void sol ...

  7. 20191028 Codeforces Round #534 (Div. 1) - Virtual Participation

    菜是原罪. 英语不好更是原罪. \(\mathrm{A - Grid game}\) 题解 \(4 \times 4\) 的格子,两种放法. 发现这两种在一起时候很讨厌,于是强行拆分这个格子 上面 \ ...

  8. Pursuit For Artifacts CodeForces - 652E (Tarjan+dfs)

    Pursuit For Artifacts CodeForces - 652E Johnny is playing a well-known computer game. The game are i ...

  9. Solution -「构造」专练

    记录全思路过程和正解分析.全思路过程很 navie,不过很下饭不是嘛.会持续更新的(应该). 「CF1521E」Nastia and a Beautiful Matrix Thought. 要把所有数 ...

随机推荐

  1. phpQuery用法总结

    项目下载地址:http://code.google.com/p/phpquery/ 获取内容的方法: 第一种:newDocumentFile phpQuery::newDocumentFile($ur ...

  2. 数据库系统学习(八)-SQL语言与数据库完整性和安全性

    第八讲 SQL语言与数据库完整性 重难点 数据库完整性的概念 关系数据库 防止和避免数据库中不合理数据的出现 输入错误,操作失误,程序处理错误等 完整性约束条件的一般形式 对O操作集合,当出现A情况时 ...

  3. 一起学习CMake – 01

    一起学习CMake – 01 本节介绍CMake里最常用的三个命令,分别是cmake_minimum_required; project; add_executable等. CMake是个好东西,在使 ...

  4. [Javascript] Convert a Callback-Based JavaScript Function to a Promise-Based One

    Sometimes, you might want to convert a JavaScript function that accepts a callback to one that retur ...

  5. webpack2 详解

    1.安装 npm install webpack -g npm install webpack -save-dev 2.编辑配置文件 // 引入 path var path=require('path ...

  6. html中跳转方法(含设定时间)

    脚本方式 如: <script language="JavaScript" type="text/JavaScript"> <!-- wind ...

  7. 重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)

    你能保证你的程序不会出问题吗? 不能 当你的程序执行到某个地方发生了你不想要的结果.你是否想让它一错再错? 不想 你是否想让你的程序占着茅坑不拉屎? 不想 你是否想知道你的程序出错的原因? 想 个问题 ...

  8. Testng 运行报错:"Total tests run: 0, Failures: 0, Skips: 0"以及找不到class文件的问题

    "Total tests run: 0, Failures: 0, Skips: 0" This means that there were no tests executed a ...

  9. iOS清理WebView的缓存

    NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; ...

  10. Spark 学习笔记:(四)MLlib基础

    MLlib:Machine Learning Library.主要内容包括: 数据类型 统计工具 summary statistics correlations stratified sampling ...