【题单】picha
P11346 [KTSC 2023 R2] 会议室 2
先反过来变成加线段。
显然只会在当前连通块加完之后再开新的连通块。按照连通块大小从大到小加入,大小相同可以任意顺序加入。最后乘上阶乘就好。
问题转化为每个连通块的顺序方案数。
考虑某个连通块每个时刻的区间并。对于一个加入顺序我们关注所有让区间并变大的那些时刻,区间并是什么。
显然对于每个区间有一个时刻,满足区间并包含他了,以后它可以选择一个时刻加入。
可以计数拓扑序数量:\(\frac{n!}{\prod_{i=0}^{k-1} (n-c_{l_i,r_i})}\),其中 \(c_{l,r}\) 表示 \([l,r]\) 包含的区间数量。第 \(0\) 个时刻可以认为区间为空。
前缀和优化 dp 转移即可做到 \(O(n^2)\)。
P14383 [JOISC 2017] 港口设施 / Port Facility
如果两个线段是相交关系,那么必须分开两个栈存放。于是可以建图,不是二分图就无解。反之方案数是 \(2^{c}\)。
按照左端点排序,每次加入一个线段,连边。
先把 \(r_j<l_i\) 的线段删除。然后对于 \(r_j<r_i\) 的线段连边。
显然我们这些点颜色都是相同的,否则会无解。
考虑启发式合并,给每个同色块找一个代表元。
由于是 \(r_j<r_i\),所以我们想要找到 \(r_j\) 最小的作为代表元。那么代表元被删除的时候就新找一个更小的就好了。
最后跑一遍二分图染色。
AT_codefestival_2015_final_h 焼肉の達人
显然没有任何一个点被覆盖超过 2 次,这样一定不优。
考虑计算 2 倍线段总长减去失去的贡献。
失去的贡献可以计算为,空区间长度*2+选择区间的长度和。
最短路建模处理这个东西的最小值。
P14384 [JOISC 2017] 烟花棒 / Sparklers
https://www.cnblogs.com/TalBana/p/19138659
P11099 [ROI 2022] 照明 (Day 1)
-
\(S=\{1\}\):简单计算。
-
\(S=\{1,2,3,4\}\):如果 \(n\ge 4\) 一定存在方案进行覆盖全部,\(n<4\) 暴搜。
-
\(S=\{1,2\}\):考虑 \(y\) 最小的两个点 \(y_1<y_2\),若 \((x_1,y_1)\) 选择照明 \((x_2,y_2)\),那么 \((x_2,y_2)\) 就照相反的方向。上方的点就无序考虑了。
否则若 \((x_1,y_1)\) 照明相反的方向,那么被照明的点选择是唯一的,可以递归子问题。 -
\(S=\{1,3\}\):我们当然希望可能被照明的区域全部被照明,发现存在 \(x_1\le x_2,y_1\le y_2\) 就是一个最优的结构。每次找出这样的结构删去,最后只剩下一个递减的点序列。
考虑 dp,设 \(f_{i,j,d}\) 表示当前考虑 \(x\) 前 \(i\) 小的点,当前方向是 \(d\),上一个不同方向的是 \(j\)。转移是容易的,可以做到 \(O(n^2)\)。- 性质:\(i-j\le \log_2 V\)。
- 证明:考虑 \(i\) 换向的贡献。
然后就可以做到 \(O(n\log V)\) 了。
-
\(S=\{1,2,3\}\):
还是考虑找到最优的结构:- 结构 1:\(x_1\le x_2\le x_3,y_1\le y_2\le y_3\)。
- 结构 2:\((x_1,y_1)\) 的右上角有至少 3 个点。
先删掉所有结构 1,那么最小反链划分等于最长链长度,故至多可以划分为 2 个下降点序列。然后发现至多只有两个选择 2 象限的点,否则一定存在无用的。
然后再删结构 2,这样一个点右上角不超过 2 个点。
那么可以枚举选择 2 象限的点,只有 \(O(n)\) 种情况,接下来再跑 \(S=\{1,3\}\) 就行了。
浙公网安备 33010602011771号