比赛题目:
-
T1
想了一半,中途把代码丢了亏大了。
考虑设 \(f(i,j,S)\) 代表从后往前到第 \(i\) 个位置,此时右括号 \(-\) 左括号 \(=j\),后面状态为 \(S\) 的方案数,转移是简单的。
求答案只要按照字典序去贪心即可。
但是这样朴素做是 \(O(n^2)\) 的,考虑如何优化,注意到如果 \(f(i,j,S)\) 值为 \(0\) 或 inf 是没用的,于是只要记录一下 dp 值有用的左右端点,然后暴力更新,tyy 说可以证明,复杂度是不超过 \(\sqrt[3]{k}\) 的。 -
T2
先二分答案,设为 \(t\), -
T3
题解的做法很抽象,我们可以先转对偶图,把一个面缩成一个点,相邻的面对应的点连边,此时一定构成一个树形结构,我们考虑每条边的贡献,一定是等差数列的形式,于是树上差分即可。
tyy 说建树的过程可以写拓扑,但是我不是很会写。 -
T4
考虑贪心。
答案一定形如一个人在 \(u,v\) 方面最强,另外两个人分别在 \(p,q\) 方面最强的答案。
显然,。。。不会了。
枚举次数 \(b\),然后求出前 \(k\) 大的,比 \(\sqrt[b]{n}\) 大的质数。
显然,当 \(b\geq 3\) 时,复杂度就很优秀了,考虑 \(b=2\),此时 \(\sqrt{n}\) 是 \(10^9\) 的,但是根据素数定理,我们只需要估计一下左右区间端点跑筛子即可。
显然,答案 \(\leq 2\),证明考虑最坏情况我们对于 \(s\) 创造一个节点,权值为 \(a_s(a_s+1)\),对于 \(t\) 创造一个节点,权值为 \(a_t(a_t+1)\),显然,这两个节点的权值 gcd 至少为 \(2\),此时合法,接下来分类讨论。
-
\(k=0\),我们枚举质因子 \(p\),代表他是 gcd 中的因子,我们只需要把含这个因子的权值用并查集全部合并起来即可。
-
\(k=1\),此时必然有一个质因子作为中间桥梁,我们枚举这个因子,
-
CF1699D
和 whq 的那个概率题形式很像。
我们考虑最后一定是一个相同的数的子序列把序列分成了若干段的形式,其中这些段必须全部被删空。
考虑一段被删空的充要条件,是这一段长度为偶数,并且没有绝对众数。
考虑证明,可以归纳,大概是考虑最大的数出现次数为 \(c_1\),次大的为 \(c_2\),此时有 \(c_2\leq c_1\leq \frac{n}{2}\),我们考虑删掉一个最大的数,此时 \(c_1\) 的限制仍然满足,\(c_2\) 限制如果不满足则一定有 \(c_2=c_1=\frac{n}{2}\),而这种情况是简单的。
本文来自博客园,作者:zjrqwq,转载请注明原文链接:https://www.cnblogs.com/zjrqwq/p/16908701.html
浙公网安备 33010602011771号