26杭电暑期 3

赛时

赛时先开了“签到题” J

发现怎么怎么看怎么不会?我草好没思路

不会签到倒闭了

遂远离榜单随机开题,发现 C 似乎很有说法

是因为发现了 C 的倍增性质,接下来思考怎么用倍增的性质

发现只需要记录长度 DP 子序列和的最小值,一发过了

然后开 E 手玩发现其实是分配因子,那么显然均分最合适

一开始考虑错了,以为每次只令一个素因子的次数减一

后来发现是均分,就是所有因子的次数最优的情况下都是除以 \(2\)

发现只能处理 \(10^6\) 不过够用了,写了两发一发 MLE 了也是神了

另一发 TLE 了也是神了发现上限没改

接着跟榜看 I,

手玩着发现如果有一个答案只有一个题用它当备选决策,毫无疑问这个一定是确定的

这样就可以一层一层拓扑的消掉边,剩下的每个点两条出边。那一定是个环了

那么这样的话,要么全对,要么全错,就好算了

这个题居然犯唐爆了四发?

然后看了看 D 发现很网络流啊

不过网络流能过吗?网络流过了?!

后面尝试了一下 F 发现前一半还是可以做的

但是后一半到底是什么?怎么 J 题也不会?

倒闭了下播了

遂倒闭离场

赛后题解

感觉不会构造很多时候是没有找对构造的方向

那么构造的方向是什么呢?是乱搞

E

先给 \(x\) 做质因数分解

我们发现,题目里的找 \(a\times b=x\) 可以被理解成将 \(x\) 的每个质因子分配给这两个数

显然贪心的要让结果尽可能地大,那我们分配每个质因子就尽可能平均分配到这两个数

也就是说,单次所有质因子的系数减半,找到次数最高的质因子取对即可

接下来是对 \(10^18\) 规模的质因数分解质因式

不过考虑到这个东西至多写成两个 \(10^6\) 以上质因数的乘积,

只需要考虑这两个的次数即可,要么是两个 \(1\) 要么是一个 \(2\)

只有后者有用,直接验证即可

对于 \(10^6\) 以内的部分筛出来质数,对这部分照常质因数分解即可

C

注意到 \(a_i>\sum a_j\) 的形式,说明子序列的长度是对数级别

这样的话,根据贪心决策包容性,相同的子序列和越小越优

那么 \(g_{i,j}\) 表示取到第 \(i\) 位长度为 \(j\) 的子序列的最小值

这个状态转移方程看着是 \(O(n^2)\) 的,不过直接一个变量存最优决策就是 \(O(n\log V)\) 的了

I

画个图玩玩,把每个题目表示的点和每个答案表示的点连上边

发现如果有一个答案只有一个题用它当备选决策,

毫无疑问这个答案一定是确定给它连边的那个题的

那么那个题确定的另外一个答案就可以删掉了,

如果这样会导致一个新的答案只有一个题用它当备选决策,就重复

这个过程还是很类似拓扑的

直到不存在这样的题和答案为止,剩下的就一定是环

那么环上要么全对要么全错,无论如何期望都是 \(\frac{N}{2}\)

不同的环期望线性性加和即可

D

最小费用最大流的板子

连边是源点到孩子,孩子到玩具流量 \(1\) 费用 \(0\)

然后玩具到汇点连边是流量 \(1\) 费用 \(w_{i,j}\) 总共 \(y\) 条边

F

首先取后 \(\frac{n}{2}\) 个数,这些数肯定不会存在某个数是另一个数的倍数

这种情况一直会取到 \(\lceil\frac{n}{2}\rceil\) 为止,

再往下就会出现最后一个数/倒数第二个数是另一个数的倍数了,就不行了

然后考虑怎么构造,考虑任意数都可以写成 \(x\times 2^{f_x},2\not| x\) 的形式

我们取出所有的奇数,令这些 \(f_x\) 尽可能小,

如果要不能整除的话,需要同时要满足 \(\forall 2\not|k,f_x\geq f_{kx}+1\)

这样的话,可以递推出来 \(f_x=\lfloor\log_3\lfloor\frac{n}{x}\rfloor\rfloor\)

算出来所有 \(x\times 2^{f_x}\) 扔进去排序即可

H

首先算出每一位所有的合法填法,这个是传递闭包然后直接枚举子集去做。

当然算出来的应该是没有全零和全一的,将此方案数记为 \(C\)

假设我们得到了这一部分的合法填法,记为 \(C\)

\(f_{l}\) 表示填完前 \(l\) 位,是否存在数字卡上/下限或者同时卡住上下限(不一定是同一个)或者都没有卡上下限

如果都不卡上下限,那么下一位也是都卡不了上下限,那么下一位的填法有 \(C+2\)

如果只是卡了上限,那么下一位上限是 \(0\) 的情况下只能转移到卡上限填全 \(0\) 方案为 \(1\)

否则转移到双不卡的方案是填全 \(0\),一旦有一位是 \(1\) 就转移到卡上限,这部分方案算上全 \(1\)\(C+1\)

卡下限同理,上限情形所有上改成下,\(0\) 改成 \(1\) 即可

卡双限是没有办法直接转移到双不卡的,

如果能只卡一边的话,方案只有全 \(0\) 或者全 \(1\),方案为 \(1\),当然这个是上下限不等的情况

如果上下限相等填全 \(0\) 和全 \(1\) 就还是双卡,方案为 \(1\)

如果是下限 \(0\) 上限 \(1\) 那么只要填 \(0\)\(1\) 都带的就保持卡双限,方案为 \(C\)

否则双卡还下限 \(1\) 上限 \(0\) 那说明不合法,方案为 \(0\)


后面的带修优化考虑数据结构,发现这个可以写成矩阵乘法转移

那直接上线段树修改矩阵区间查矩阵乘法就行了

B

一开始只看了题解的几个关键词,发现是线性规划

于是先往线性规划的方向写了写,发现要同时考虑最小-最大

这个不是一边的,所以解最原始的线性规划是没办法的

先考虑最坏的情况,就是投入一元钱的收益最少的情况,

此时收益一元钱的就是最多的,我们去优化它的最小值

听起来好像和一开始直接考虑的没有区别,

不过考虑收益一元钱的最小投入,那么你就是有约束的

这个约束就是任意情况下收入不小于 \(1\)

然后我们有了这个之后求出这个最小投入,直接按此分配即可


那么现有的方式写完线性规划之后,按此法转置交换写其对偶形式

屏幕截图 2026-08-04 005050

在此情况下,由于这两个问题都是有界的满足强对偶,这两个问题的最优解是相等的

所以转求对偶问题的最优解

对条件 \(1\) 进行变形,左边除以 \(x_i-1\) 然后加到条件 \(2\) 会得到 \(S\leq 1\)

直接把条件 \(1\) 的左边变形,可以得到 \(y_i\leq \frac{1}{x_i}\)

那么对于这个新的条件 \(1\) 左边累加如果不超过 \(1\) 这个就真就是 \(S\) 的最大值了

但是如果条件 \(1\) 的累加过了 \(1\) 那就是要卡条件 \(2\)

第二种情况是右边累加大于 \(1\) 了这个时候取不到

这个时候可以把条件 \(2\) 写成 \(S-\frac{x_i-1}{x_i}\leq y_i\) 的形式

再加上 \(y_i\geq 0\) 就可以累加得到 \(|A|S-\sum\limits_{i\in A}\frac{x_i-1}{x_i}\leq S\)

解得 \(|S|\leq\frac{\sum\limits_{i\in A}\frac{x_i-1}{x_i}}{|A|-1}\)

那么如果让限制尽可能严,选出来的 \(i\) 要满足 \(\frac{x_i-1}{x_i}\) 尽可能小

那么这样的话只需要按照 \(|A|\) 的大小挑出来 \(n\) 个最严的限制就行了

posted @ 2026-08-04 01:26  2K22  阅读(7)  评论(0)    收藏  举报