Java教程

Solution Set - 神奇 NOIP 模拟赛

本文主要是介绍Solution Set - 神奇 NOIP 模拟赛,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

\[\mathfrak{\text{Defining }\LaTeX\text{ macros...}}\newcommand{\vct}[1]{\boldsymbol{#1}}\newcommand{\stir}[2]{\genfrac{\{}{\}}{0pt}{}{#1}{#2}}\newcommand{\opn}[1]{\operatorname{#1}}\newcommand{\lcm}[0]{\opn{lcm}}\newcommand{\sg}[0]{\opn{sg}}\newcommand{\dist}[0]{\opn{dist}}\newcommand{\lca}[0]{\opn{lca}}\newcommand{\floor}[2]{\left\lfloor\frac{#1}{#2}\right\rfloor}\newcommand{\ceil}[2]{\left\lceil\frac{#1}{#2}\right\rceil} \]

  2021.10.29.

  「A. 莓良心」 给定 \(\{w_n\}\),对于所有将其划分为 \(k\) 个非空集合的方式,求 \(w_i\times (w_i\text{ 所在集合大小})\) 之和的总和模 \(998244353\) 的值。\(n\le10^6\)。

  考虑算每个 \(w_i\) 的贡献次数,首先 \(w_i\) 自己算一次,\(\stir{n}{k}\);任意 \(j\not=i\) 的 \(w_j\) 和 \(w_i\) 放一次时贡献一次,\((n-1)\stir{n}{k-1}\),\(\mathcal O(n)\) 算第二类斯特林数单点值即可。


  「B. 尽梨了」  给定 \(\{(a,b)_n\}\),初始时 \(t=0\),每次选一个未选过的 \(i\),令 \(t\leftarrow(a_i+1)(t+1)+b_i\),需要保证此时 \(t\le m\)。求最多能选择的次数。\(n\le2\times10^5\),\(m\le10^9\)。

  交换贪心可知确定要选的集合时最优的选取顺序,依此排序后,问题变为从其中依次取子序列。注意到 \(a=0\) 的必然最后选,且按 \(b\) 从小到大选;\(a\not=0\) 每次选择至少有 \(t\leftarrow 2(t+1)\),对于这种情况直接 DP,最后考虑 \(a=0\) 即可。复杂度 \(\mathcal O(n\log m)\)。


  「C. 团不过」 有求 \(n\) 堆有标号石子堆,每堆石子数量在 \([1,2^n)\) 且不存在两堆相同数量石子堆时,Nim 先手必胜的方案数。\(n\le10^7\)。

  令 \(f_i\) 为仅考虑 \(i\) 堆石子的方案数,显然可以通过下降幂、\(f_{i-1}\) 和 \(f_{i-2}\) 进行转移。复杂度 \(\mathcal O(n)\)。


  「D. 七负我」 给定无向图 \(G\),给每个结点赋非负实数权值 \(a_i\),使得 \(\sum a_i=x\),最大化 \(\sum_{(u,v)\in E}a_ua_v\)。\(n\le40\)。

  调整法证必然有一种方案,\(a_i>0\) 的结点的导出子图是团,继而发现取最大团最优。这里直接 Meet in Middle 求最大团即可。复杂度 \(\mathcal O(2^{\frac{n}{2}}n)\)。

这篇关于Solution Set - 神奇 NOIP 模拟赛的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!