我是靠谱客的博主 闪闪康乃馨,最近开发中收集的这篇文章主要介绍刷(shui)题记录 2021.10 [2][ARC111-C] Too Heavy[ARC114-C] Sequence Scores[ARC115-D] Odd Degree,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

[ARC111-C] Too Heavy

⇒ Rightarrow 原题链接

首先判断无解:
∃ i ∈ [ 1 , N ] , p i ≠ i 且 b p i ≥ a i ⇔ 无解 exists i in [1, N], p_i ne i text{且} b_{p_i} ge a_i Leftrightarrow text{无解} i[1,N],pi=ibpiai无解

接下来用 p i p_i pi 建个图 ∀ i ∈ [ 1 , N ] , i → p i forall i in [1, N], i rightarrow p_i i[1,N],ipi

对于某个联通块 C C C ,一定是一个环,以任何一个 a a a 最大的节点作为起始节点,得到一个便利序列 l   ( ∣ l ∣ = ∣ V C ∣ ) l~(|l| = |V_C|) l (l=VC),可以构造方案:
l 1 ↔ l 2 l 1 ↔ l 3 ⋯ l 1 ↔ l n begin{aligned} &l_1 leftrightarrow l_2\ &l_1 leftrightarrow l_3\ &cdots\ &l_1 leftrightarrow l_n end{aligned} l1l2l1l3l1ln

然后所有联通块的方案拼起来就行了。

[ARC114-C] Sequence Scores

⇒ Rightarrow 原题链接

考虑对于一个确定的序列 A A A 怎么求出 f ( A ) f(A) f(A) 值。

对于值 x x x ,设其在序列 A A A 的出现位置序列为 l A ( x ) l_A(x) lA(x) ,位置从小到大排,特别的 l A ( x ) 0 = 0 l_A(x)_0=0 lA(x)0=0。其对 f ( A ) f(A) f(A) 的贡献显然可以这样求:

考虑向一个序列 A A A 的末尾添入一个值,变为 A ′ A' A,假设当前需要添入 x x x ,分情况讨论:

  • 序列 A A A 没有 x x x ,那么 f ( A ′ ) : = f ( A ) + 1 f(A') := f(A) + 1 f(A):=f(A)+1
  • 序列 A A A 中最后一个 x x x 个位置为 p p p f ( A ′ ) : = f ( A ) + [ min ⁡ i = p + 1 ∣ A ∣ { A i } < x ] f(A') := f(A) + left[min_{i = p + 1} ^ {|A|}{A_i} < xright] f(A):=f(A)+[mini=p+1A{Ai}<x]

f ( n ) f(n) f(n) 表示所有长度为 n n n 的序列的得分和, g ( n , x ) g(n, x) g(n,x) 表示长度为 n n n ,最后一个值为 x x x 之后的位置的值都大于 x x x 的序列个数。

那么可以得到:

g ( n , x ) = ∑ i = 1 n m i − 1 ( m − x ) n − i f ( n ) = ∑ i = 1 m f ( n − 1 ) + m n − 1 − g ( n − 1 , i ) begin{aligned} &g(n,x)=sum_{i=1}^n m^{i-1} (m-x)^{n-i}\ &f(n)=sum_{i=1}^m f(n-1)+m^{n-1} - g(n-1,i) end{aligned} g(n,x)=i=1nmi1(mx)nif(n)=i=1mf(n1)+mn1g(n1,i)

[ARC115-D] Odd Degree

⇒ Rightarrow 原题链接

考虑一个连通图 C C C 的答案。

如果 K K K 是奇数,那么 A N S rm{ANS} ANS 必然为 0 0 0 ,只用考虑 2 ∣ K 2 mid K 2K 的情况。

首先想一棵树的情况:考虑确定所有节点的度数奇偶性,从叶子结点开始向上确定每一条边是否选择,可以发现选择方案是确定的,因此对于一棵树而言:
A N S K = ( ∣ V C ∣ K ) mathrm{ANS}_K=binom{|V_C|}{K} ANSK=(KVC)

接下来考虑一般情况,首先随便弄一棵生成树,然后对于非树边,随便选择一些,然后再确定节点的度数奇偶性,发现对于树边,其选择方案一定是确定的,因此有:

A N S K = ( ∣ V C ∣ K ) 2 ∣ E C ∣ − ∣ V C ∣ + 1 mathrm{ANS}_K=binom{|V_C|}{K} 2^{|E_C|-|V_C|+1} ANSK=(KVC)2ECVC+1

对于所有联通块,用背包对答案进行合并,合并方法可以用类似树形背包的方法,可以做到 O ( n 2 ) O(n^2) O(n2)

最后

以上就是闪闪康乃馨为你收集整理的刷(shui)题记录 2021.10 [2][ARC111-C] Too Heavy[ARC114-C] Sequence Scores[ARC115-D] Odd Degree的全部内容,希望文章能够帮你解决刷(shui)题记录 2021.10 [2][ARC111-C] Too Heavy[ARC114-C] Sequence Scores[ARC115-D] Odd Degree所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部