CF839

选了一套水 CF 我也是没招了

A.Arya and Bran

洛谷链接& CF 链接

糖果之间并无差异与限制,所以直接贪心每天取上限颗糖果即可。直接模拟模拟完了

B.Game of the Rows

洛谷链接& CF 链接

根据题意,一组 \(a_i\) 个数需要分为若干二元组 \((i,i)\)\((i,0)\),相同的两个二元组、或至少一组的一个元素为空的两个二元组可以拼合变成四元组,问是否存在一种方案使得二元组的数目小于等于 \(2n\) 且四元组的数目小于等于 \(n\)

考虑先贪心使得所有选择都是四元组,当四元组的数目达到上限后使得剩下的全都选择二元组,判断二元组是否超过上限即可。因为四元组有两种情况,本人懒得在过程中记录各种变量进行分讨,所以我是在第一次循环中计算第一种四元组,若最后未达到上限再将部分二元组拼合成四元组判断。

C.Journey

洛谷链接& CF 链接

直接在 dfs 过程中计算深度与到达每个叶子结点的概率即可

D.Winter is here

洛谷链接& CF 链接

刚开始想的是枚举 \(a_i\) 作为子序列的最后一项,但这样避免不了枚举 \(\gcd\) 的复杂度,所以不如外层循环枚举 \(gcd=i\),计算所有满足条件的子序列长度之和。

显然序列 \(gcd=i\) 的必要条件是 \(\forall a’_j\in 序列, i|a’_j\),所以对于每个 \(i\),先计算出序列元素都是 \(i\) 的倍数的所有序列的长度之和。这可以先预处理 \(sum_i\) 记录原序列中约数包含 \(i\) 的数的个数,令 \(s=sum_i\) ,那么序列长度之和即为

\[\sum_{i=1}^s i\times \binom{s}{i}=s\times 2^{s-1} \]

但此时产生了一个问题:序列 \(\gcd\) 可能是 \(i\) 的倍数而非 \(i\)。其实可以倒序计算答案,容斥出去所有序列 \(\gcd\)\(i\) 的倍数的序列长度之和就可以得到答案了。

E.Mother of Dragons

洛谷链接& CF 链接

喜欢我们 \(n\leqslant 40\) 吗?

无向图还是太复杂了。

  • 当图中只有一条边时,显然最优方案为两个节点权值都是 \(\frac{K}{2}\)

  • 当给出的图是一条长度为 \(5\) 的链时,其价值可以表示为 \(s2\times (s1+s3)+s4\times (s3+s5)\),容易发现只给 \(s1,s2,s3\) 分配权值时价值最大,这启示我们在最优解中可能并非所有节点都有权值

  • 现在考虑钦定某个点有权值,逐渐给与该点有关的点分配权值。经过计算发现加入一个点 \(v\) 会使得价值增加当且仅当点 \(v\) 与目前子图中的所有点都有边,最后的答案即为原图中的最大完全子图平均分配权值后的价值

所以在原图上求出最大团即可。求最大团可以 meet-in-the-middle,也可以用 Bron-Kerbosch

后话

算出来个与 \(\frac{n(n-1)(2n+1)}{2n^2}\) 有关的不等式哈哈哈。

posted @ 2025-08-27 17:03  沄沄沄  阅读(9)  评论(0)    收藏  举报