Loading

关于今天T2的我要说的可反悔贪心是个什么东西

首先,为什么跑不了费用流:因为无法保证在一次更新中退流和进流中一个位置只出现一次

其次,这肯定不是正解,得依赖特判,部分情况可能最后会出现因为不断特判导致复杂度假掉(目前看来没有),同理,显然正常的费用流没法边跑边特判

然而,可以保证,可能出现的“增广”(暂且叫做增广)只有十种情况

证明:设 \(a_i\) 表示有 \(i\) 个位置长度退了 \(i\)\(b_i\) 反之

则一个方案不重复的前提是数组 \(a\)\(b\) 分别做背包可达值没有重复的

否则把这部分分别去掉,又是一种合法方案,不管这部分贡献是正是负在更前的时候都会处理

所以这个思想再推广一下就是分段了

打表得到只有十种情况,下面每一组第一行表示标号,第二行是 \(a_i\),第三行是 \(b_i\)

1
0000
1000
2
0002
0030
3   
0010
0001
4
0010
0200
5
0100
0010
6
1000
0100
7
1001
0020
8
1100
0001
9
2000
0010
10
3000
0001

但是说实话这个表对正解的启发性还是趋近于 \(0\)

而每个位置可进退之和不大于 \(4\) ,所以表 \(1,2,3,4,5,10\) 都是不需要特判的,表 \(6,7,8,9\) 的特判也不会影响复杂度

代码有时间我再实现,实现了TLEcoders估计也过不了

我上去说的时候没准备好,也没解释清楚为什么费用流无法建模,主要是没先说明这个方法大概是错的,我只是想说明它只有十种可能

所以下次能不能让我先说完,先别过了再说和费用流无法实现行不行

维生素B

posted @ 2023-02-21 16:35  hzoi_Sakura  阅读(82)  评论(13编辑  收藏  举报