首页 > 其他分享 >[AGC004F] Namori 题解

[AGC004F] Namori 题解

时间:2023-08-19 09:00:55浏览次数:43  
标签:AGC004F 一个点 题解 可以 Namori 要么 有解 我们

这里给出一种与其他题解完全不同的实现方式。

思路

发现图要么是一棵树,要么是一颗基环树。

我们首先考虑树如何操作。

我们可以 \(\text{dfs}\) 这颗树。

对于每个点维护一个 \(w,h\),表示这个点想要变成白色 \(w\) 次,想要变成黑色 \(h\) 次。

容易发现每个点最初状态都为 \(w=0,h=1\)。

我们一次往上合并。

对于一个点,我们合并都向它的父亲合并这个信息。

由于我们是从叶子节点往上推,所以一个点只会与他的父亲进行操作。

可以发现,若一个点想要变成黑色 \(h\) 次,那么必然要它的父亲变白 \(h\) 次。

同理,若一个点想要变成白色 \(w\) 次,那么必然要它的父亲变黑 \(w\) 次。

这样就可以往上转移。

再考虑消取一些情况。

一个点可以变黑的条件是它需要为白色。

一个点可以变白的条件是它需要为黑色。

那么这高速了我们,想要变黑色的数量可以与变白色的数量相互抵消。

抵消后,\(w,h\) 只有一个变量有值,我们把他统计到答案中去。

容易得知,无解的情况便是到达了根节点 \(w,h\) 还不为 \(0\)。

这就表示不能完全清空。

基环树

考虑从树的做法拓展到基环树。

我们将环上的一条边提取出来,就又变成了一条边和一棵树。

由于我们将这条边要么染白 \(k\) 次,要么染黑 \(k\) 次。

那么我们可以现将其染白一次看一看是什么情况。

对应到树上就是两个点 \(w=k-1,h=0\),其中若是染黑则 \(k\) 为负数。

可以发现,我们若是改变两个点 \(w\) 的值,最终对应到答案上要么是两个值抵消,要么是一起加在了根上。

这又启示了我们,更改 \(k\) 要么是无解变为有解,要么从有解变为更优解。

  1. 无解变为有解。

    我们可以将 \(k=0\),与 \(k=1\) 进行对比,若是根 \(w,h\) 变了,那么我们只需要将 \(k\) 赋为一个可以将其消为 \(0\) 的值即可。

  2. 有解变为更优解

    很容易猜测到,\(k\) 的取值与答案会构成一个单峰函数,那么我们直接三分解决即可。

从上文可以看出,这个做法的思维含量较低,主要是通过观察答案性质解决。

无需从环的长度以及大量的数学去推导。

缺点可能是由于需要 \(\text{dfs}\) 很多次,可能常数较大。

Code

AC记录

标签:AGC004F,一个点,题解,可以,Namori,要么,有解,我们
From: https://www.cnblogs.com/Al-lA/p/17642031.html

相关文章

  • Mike and strings 题解
    题目传送门一道字符串题。由于\(n\)非常小,可以暴力枚举字符串。我们可以枚举其中一个字符串\(s_i\),然后让其他的字符串变成\(s_i\),最后记录一下次数,取一个最小值即可。在枚举第二个字符串的时候可以将它再复制一份自己到后面,然后可以用find函数来统计。当然,如果找不到,这......
  • 洛谷_[P4084]Barn Painting G题解
    题目链接这题我们可以定义一个二维的dp数组,在dp[i][j]中:i表示对于节点i,j有1,2,3三种状态,表示当点i选择被染成颜色j时,以i为根的这颗子树有多少种染色方法。那么根据乘法原理,节点i的方案数肯定等于i的每个儿子的方案数量之积。这道题整个挺简单的,剩下细节......
  • 2023年 8月15日普及组南外集训题解
    A陷阱我们可以从\(l\)枚举到\(d\),再计算是否满足要求,满足要求加入到数组中,输出第一个和最后一个#include<iostream>usingnamespacestd;constintN=1e5+5;intk;intnums[N];intmain(){intl,d,x;cin>>l>>d>>x;for(inti=l;i<=d......
  • CF1806E 题解
    题目大意给你一棵树,然后定义一个函数$f(x,y)$,接下来给你$q$组询问\(x_{i},y_{i}\),让你求每一次的$f(x_{i},y_{i})$。分析首先我们尝试根据这个函数的定义暴力求值,代码实现如下。llBFquery(intg,inth){if(!g)return0;return1ll*a[g]*a[h]+BFquery(p......
  • P4005题解
    闲来无事写篇题解题面传送门简要题意一条线段上有\(n\)个点成对连接,求所连的线最小交点数。思路看到题目中\(n\le44\)自然想到最终复杂度大约在\(O(2^\frac{n}{2})\)左右。经过思考不难发现不论如何两地铁站之间有且只有以下八种方式进行连接:显然可以暴搜解决,......
  • wsl2 下输出重定向至 clip.exe 出现中文乱码问题解决方案
    背景win10系统在wls2下安装neovim后希望与windows剪切板通信。按教程添加如下配置。--系统剪切板ifvim.fn.has('wsl')then vim.g.clipboard={ name='WslClipboard', copy={ ['+']='clip.exe', ['*']='clip.exe'......
  • 搭配买卖题解
    原题题目描述joe觉得云朵很美,决定去山上的商店买一些云朵。商店里有n多云,云朵被编号为1,2,……,n,并且每朵云都有一个价值。但商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这多云有搭配的云都要买。但是Joe的钱有限,所以他希望买的价值越多越好。输入第1行:n、m、w,表示......
  • 「BJWC2012」冻结题解
    「BJWC2012」冻结题解一.题目"我要成为魔法少女!""那么,以灵魂为代价,你希望得到什么?""我要将有关魔法和奇迹的一切,封印于卡片之中"在这个愿望被实现以后的世界里,人们享受着魔法卡片(SpellCard,又名符卡)带来的便捷。现在,不需要立下契约也可以使用魔法了!你还不来试一试?比如,我们在......
  • [AGC004D] Teleporter 题解
    简单贪心。思路可以发现一号节点必然连向自己。由于题目中保证了最初每个点都可以到达一号节点。那么我们发现改完一后,原图变成了一棵十分优美的树。考虑在树上进行贪心。我们贪心的从叶子结点往上走。知道第\(k\)个若还没要到\(1\),就直接连向一号节点。这个贪心也比较......
  • 【题解】#119. 最大整数 题解(2023-07-12更新)
    #119.最大整数题解本文章的访问次数为次。Part1提示题目传送门欢迎大家指出错误并私信这个蒟蒻欢迎大家在下方评论区写出自己的疑问(记得@这个蒟蒻)本文已同步至学校网站、博客园。Part2背景本来是不想写这篇题解的,但是由于卡了这个蒟蒻\(1\)整天,故此纪念。Par......