题目简述:给定简单(无自环、无重边)连通无向图$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. 【postgresql】postgresql中的between and以及日期的使用

    在postgresql中的between and操作符作用类似于,是包含边界的 a BETWEEN x AND y 等效于 a >= x AND a <= y 在postgresql中比较 ...

  2. Docker资源限制实现——cgroup

    摘要 随着Docker技术被越来越多的个人.企业所接受,其用途也越来越广泛.Docker资源管理包含对CPU.内存.IO等资源的限制,但大部分Docker使用者在使用资源管理接口时往往还比较模糊. 本 ...

  3. [转]java类 对象 和构造方法

    github地址:https://github.com/lily1010/java_learn/tree/master/dog java中对象和类 java中万物皆对象,比如说动物,里面有猫,狗,鱼等 ...

  4. 30 分钟编写一个 Flask 应用

    Flask 是一种很赞的Python web框架.它极小,简单,最棒的是它很容易学. 今天我来带你搭建你的第一个Flask web应用!和官方教程 一样,你将搭建你自己的微博客系统:Flaskr.和官 ...

  5. 区间DP与贪心算法的联系(uav Cutting Sticks &amp;&amp; poj Fence Repair(堆的手工实现))

    由于,这两题有着似乎一样的解法所以将其放在一起总结比較,以达到更好的区分二者的差别所在. 一.区间DP uva的Cutting Sticks是一道典型的模板题. 题目描写叙述: 有一根长度为l的木棍, ...

  6. 计算机网络系列:2M的宽带指的是下载速度么?

    本篇文章对于不懂网络的小白有点用处.避免以后闹笑话.当然.对大神来说.这都是常识了. 我相信非常多人都有过这个问题:我4M的宽带怎么下载速度才300kb/s啊啊啊.这坑爹的宽带. 我没学的时候我也会这 ...

  7. candy——动态规划

    There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...

  8. iOS之UI--使用SWRevealViewController 实现侧边菜单功能详解实例

     iOS之UI--使用SWRevealViewController 实现侧边菜单功能详解实例 使用SWRevealViewController实现侧边菜单功能详解 下面通过两种方法详解SWReveal ...

  9. java的多态以及重载,重写,前期绑定,后期绑定

    多态的定义: 一个类实例的相同方法在不同情形有不同表现形式.多态机制使具有不同内部结构的对象可以共享相同的外部接口.这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通 ...

  10. cmd下并行执行appium +maven+Testng test

    1: first: open two command wins to start appium: appium -p 4725 -bp 4726 -U EP7333W0UR appium -p 472 ...