Loading

盖世计划--0725--B班训练

A

结论题。

容易做差去考虑,设 \(c_i=a_i-b_i\),每次操作就是在 \(c\) 序列上选择 \(k\) 个位置,奇数位 \(+1\),偶数位 \(-1\)。这并不会改变区间和,所以有解的必要条件是区间和为 \(0\)

这还不够,转化到前缀和上考虑,我们发现操作只会让前缀和变大,所以另一个条件就是任意位置的前缀和小于等于 \(0\)

考虑最少的操作次数,再分析操作,每一次操作可以让前缀和上若干区间 \(+1\),并且由于有解,区间最后一个位置前缀和 \(c_i\) 一定为 \(0\),可以构造一组方案,使得答案为区间前缀和最小值的相反数。

维护区间最大/小值复杂度 \(O(n\log n)\)

B

写过了。简单状压。

C

区间 dp。

写过了。可行性问题的主要优化方式就是把状态内存的 \(0/1\) 换为最优位置等更好的信息,分段维护信息,减小复杂度。

D

写过了。简单状压。

E

图论题。

首先根据内向基环树的充要条件:

具有 \(n\) 个点 \(n\) 条边的联通块,任意节点有且只有一条出边

所以从内向基环树上考虑,最终的答案一定是一个环,也就是每个点有且仅有一条入边。

将树断成若干链,要使答案最优,考虑贪心,每个节点独立,所以保留代价最大不删即可。

然后发现在环上的点有时是错的:如果环上所有边都保留,那么就不是链了。

所以环上至少断一条边,这条边一定是改变后答案增加最小的边。

复杂度 \(O(n)\)

F

简单状压。

G

状压 dp。

实数范围内的随机显然一点思路都没有,考虑转化条件。

人类智慧:设 \(y_i=x_i-0.5\),那么限制就变成:

  1. \(y_i+y_j\le0\)
  2. \(y_i+y_j\ge0\)

这两个式子的判断实际上只与绝对值大的数有关。具体的说:不妨设 \(|y_i|\le|y_j|\),那么 \(y_i+y_j\le0\) 的充要条件就是 \(|y_j|\le 0\)。这样每个位置就只关心正负性了,脱离实数就好做了。

这启发我们按绝对值从小到大考虑 \(y_i\),这样每条限制就只和前面的数相关了。考虑状压,设 \(f_s\) 表示考虑了当前集合 \(s\) 中的位置的满足限制(只考虑集合中相互的限制)的方案数。转移枚举集合中的最大值满足限制下是取正还是取负。

考虑这样的方案数实际上是啥。实际上是长度为 \(n\)\(01\) 串从小到大考虑后满足限制的方案数。每个 \(1\) 数量相同的 \(01\) 串有 \(n!\) 种排列,而满足大小关系的排列只有 \(1\) 种,所以总共的情况为 \(2^nn!\) 种,答案需要除以 \(2^nn!\)

posted @ 2024-07-30 14:24  Fire_Raku  阅读(8)  评论(0编辑  收藏  举报