首页 > 其他分享 >CodeForces - 1364D

CodeForces - 1364D

时间:2024-10-16 21:46:25浏览次数:7  
标签:1364D 一个 CodeForces 节点 循环 顶点 com 我们

通常的想法是:如果图是一棵树,那么通过对顶点进行双色染色,并从更频繁的颜色中选取顶点,就可以轻松找到大小为 \(\lceil\frac{n}{2}\rceil\) 的独立集合。否则,图就是循环的。让我们得到一个没有任何边 “穿过 ”的循环。换句话说,它没有任何一对不相邻的顶点由边连接。如果它的长度最多为 \(k\),则打印出来。否则,取其他每一个顶点(取一个顶点,留下一个顶点),最后就会得到一个足够大的独立集合。如何找到这样的循环?

第一个解决方案

让我们在图中做一个 DFS。当我们第一次碰到一个有后缘的节点时,我们取一条通向最深节点的后缘来结束循环。这个循环不可能有任何边穿过,因为我们节点的祖先都没有背边(根据定义)。

代码链接: https://pastebin.com/wsCXuzGy

第二种解决方案

让我们获取图中的任意一个循环。现在,让我们遍历不属于循环的边。每当遇到 “与循环交叉 ”的边,我们就用它将循环切割成两个长度较小的循环,并保留其中任何一个。最后,我们就得到了想要的循环。

代码链接: https://pastebin.com/ezwEURKW

通过www.DeepL.com/Translator(免费版)翻译

标签:1364D,一个,CodeForces,节点,循环,顶点,com,我们
From: https://www.cnblogs.com/gutongxing/p/18470992

相关文章

  • Educational Codeforces Round 170 (Rated for Div. 2)
    A.TwoScreens难点是读题,找到最长公共前缀即可。#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;#defineinti64usingvi=vector<int>;usingpii=pair<int,int>;consti32inf=INT_MAX/2;constintm......
  • Educational Codeforces Round 170 (Rated for Div. 2) ABCD
    来源:EducationalCodeforcesRound170(RatedforDiv.2)A.TwoScreens题意给两个屏幕,两种操作,每种操作一秒,求让两个屏幕显示两个指定字符串的最短时间操作:在一个屏幕的字符串后加任意一个字符把一个屏幕的内容复制粘贴到另一个屏幕思路先弄出相同前缀,复制一下,然后不......
  • Codeforces Round 978 (Div. 2) C. Gerrymandering 轮廓DP
    CodeforcesRound978(Div.2)C轮廓DPC.Gerrymandering思路:考虑有哪些情况呢?发现结尾只有三种情况,0.平的,1.上凸,2.下凸。那么每一种后面能出现什么呢?这样看起来就好写啦。//AConemoretimes//nndbk#include<bits/stdc++.h>usingnamespacestd;typedeflonglo......
  • 【做题记录】Codeforces Round 943 (Div. 3)/CF1968A-F
    【做题记录】CodeforcesRound943(Div.3)/CF1968A-FA暴力枚举即可。B双指针枚举即可,能匹配就匹配。C考虑构造出\(a[1]=1,a[i]=a[i-1]+x[i]\)的数列,发现满足要求。D有个明显的结论,两人最终一定是在某个点上的。于是从起点开始扫一遍,求出到每一个点的距离和路上的分数......
  • Solution - Codeforces 1628D2 Game on Sum (Hard Version)
    首先来考虑Easy。注意到的是最后输出的答案要求是模意义下的,这说明对于实数二分的做法都已经用不了了。注意到\(n,m\le3000\)的数据范围,于是一个想法就是考虑DP之类的算法。考虑到B选了\(+/-\)实际上就代表着下一轮的\(m\)是否会\(-1\),于是可以设状态为\(f_{i......
  • 「题解」Educational Codeforces Round 170 (Rated for Div. 2)
    before我不想写作业呜呜。A.TwoScreensProblemA.TwoScreensSol&Code理解题意后发现使用复制的方法完成最长公共前缀即可。#include<bits/stdc++.h>typedeflonglongll;typedefstd::pair<int,int>pii;intT;std::strings1,s2;intmain(){scanf("%d"......
  • Educational Codeforces Round 170 (Rated for Div. 2) D.Attribute Checks (没有完全
    算法显然为dp状态设计\(dp_{i,j}\)表示在第\(i\)个获得能力点的地方,之前智慧能力值为\(j\),时的最大分数状态转移显然需要从\(dp_{i-1,j}\)转移而来枚举\(j\in[0,i)\)则有(注意取\(\max\)操作要与自己相比较)设第\(i-1\)个能力点到第\(i\)个能......
  • # Educational Codeforces Round 170 (Rated for Div. 2) 题解D
    EducationalCodeforcesRound170(RatedforDiv.2)题解DD.AttributeChecks链接:Problem-D-Codeforces思路:由于\(m\)还有\(abs(r[i])\)很小,考虑dp因为每个0能对后面多少个check做出贡献是固定的,所以预处理因为我们每次的0的个数是单调不减的所以,我们上一次......
  • Educational Codeforces Round 170 (Rated for Div. 2) C. New Games
    题意转化找一些相邻的数(其中相邻定义为递增序下任意相邻两数差\(\leq1\))求相邻数中,不同数字有\(k\)种,取到数字个数的最大值算法容易想到按顺序排列观察到有点像滑动窗口,考虑用队列维护一个出现不同数字次数为\(k\)的区间,再计算代码来自转载地址voidsolv......
  • Codeforces Educational Codeforces Round 170 (Rated for Div. 2)
    A-TwoScreens大意:    给两个字符串,每次在两个空子符串进行两种操作     1、字符串末尾加一个任意字母    2、一个字符串全部复制给另一个字符串    求得到给定的两个字符串的最小操作数思路:    看最前面有多少相等即可 ......