25.11.19

CF38H

神经病,先跑最短路,然后转成每个人有 \(n-1\) 种排名可选。

如果是对排名关系做 DP,不容易套上那个发牌子的策略,会重。

诶要是我们知道真的分数线就好了。

对啊我们可以枚举这个。

枚举分数线发现还是需要考虑一些同分的神经病,但是注意到编号也是排序的参考,于是直接枚举两个人,分别钦定为铜首和金尾。

然后我们就可以做 DP 了,考虑前 \(i\) 人,金银牌各给了 \(j,k\) 人。

诶主播我们怎么判这个人能加进去,显然金牌只需满足最好成绩能战胜金尾,铜牌只需满足最差成绩能输给铜首,而银牌……你可以减出来。

CF1750F

非常经典啊,考虑我们怎样才不能恢复电力。

题目中的条件显然过于复杂,我们需要找一个更能做 DP 的条件。

如果两个 1 之间还有 01 穿插的结构,那么我们就需要递归下去考虑,非常麻烦,于是我们直接考虑这个极小的 1...10...01...1 状物。

如果所有这个结构都不能操作,显然更大的结构因为由它们拼成,也不能操作。

因此不可操作的充要条件就是形如这样的段中,0 极长段的长度超过两侧 1 极长段的长度之和。

此时就可 DP 了,设 \(f(i,j)\) 表示对于长为 \(i\) 且两段钦定为 1,右端操作到不能再操作时的 1 极长段为 \(j\) 的方案数。

\(f(i,i)\) 的转移容斥即可,\(f(i,j)\) 的转移则是在 \(f(j,j)\) 前面拼上一段 ...1...10...0,可以前缀和优化这个转移。

CF1696H

显然是在贪心策略上改计数。

正负数分开考虑,按绝对值递减排序后,枚举一下分别选了多少,此时可以保证乘积的绝对值最大。

而调符号就是考虑把最后一个正数换负数或者负数换正数这样的。

诶我们好像知道怎么做了,考虑分别给两边枚举一个前缀,然后在这俩前缀中选出 \(m\) 个,这个的贡献是可以预先计算的。

然后我们再枚举一下换进来的东西,这里是可以暴力判大小的。

大概是这个状物,我们来理一下。

  1. 首先枚举选了多少个负数,用来判符号。
  2. 然后是分别枚举一个 \(i,j\),表示在正数中考虑了前 \(i\) 个且钦定了加入第 \(i\) 个,在负数中考虑了前 \(j\) 个且钦定了加入第 \(j\) 个。
  3. 枚举出 \(i,j\) 外的一个正数和负数,然后做对应替换。

这样是 \(\mathcal{O}(n^5)\) 的,注意到做替换这里其实跟负数具体多少个没有关系,于是可以拿出来只算一次。

这样是 \(\mathcal{O}(n^4)\) 的,瓶颈是我们拿出来算的这个替换。

观察一下发现枚举替换中的内容基本支持我们前缀和优化,只需在换两个数时拆掉一项 \(\max\),而 \(\max\) 这一项的分界点显然具有单调性,可以双指针扫出来。

时间复杂度 \(\mathcal{O}(n^3)\),就是写着很石,有若干细节,比如只选一种符号数的需要单独做。

posted @ 2025-11-22 12:10  LQ636721  阅读(0)  评论(0)    收藏  举报