Examples

2023-4-18 #48 请原谅 我幼稚的美感

——鸽稀拉《创作》

286 CF1148G Gold Experience

转补图,从前往后贪心找到一个独立集。(只需支持加入一个数,查询互素的数数量,枚举 μ 非零的因子容斥即可)

如果大小 k,那么直接找到解。否则每个点都会挂在独立集的某个点上(找边整体二分找到每个点的第一条就好了),因为 2kn,我们可以选一个匹配后再加点,经过讨论后可知一定有解。

复杂度 O(nlogn×2ω(V))

287 CF1621H Trains and Airplanes

啥子,为啥 *3500。

贡献形似:(ci 为颜色 i 检查次数)

i=1kmin(pi,fici)

由于是区间,不同的起始时间只会影响 fi O(1) 的取值,具体地若起始时间模 T 属于某段区间 fi=V,否则 fi=V+1

可以将值域分成 O(k) 段,每一段贡献固定。在树上 dfs 一下,随便维护一下应该就可以了?(没写代码,纯口胡!)

288 AT_nikkei2019_qual_f Jewels

类似 CF436E Cardboard Box 的反悔贪心。

容易发现 3 无解那么奇数无解。

考虑从 x 个变为 x+2 个时对答案的贡献,其方案无非四种:

  • 加入两颗取过 2 颗的宝石(可以异色);
  • 加入两颗同色宝石;
  • 删除一颗宝石,加入三颗同色宝石;
  • 删除两颗同色宝石,加入三颗同色宝石以及一颗取过 2 颗的宝石(注意若加入四颗同色宝石,那么之前决策肯定不优)。

使用堆维护,复杂度 O(nlogn)

289 Hackerrank infinitum12 Triomino Tiling

题意:一个 n×m 的白色杨表,每次可以在轮廓线上涂三个连通的格子且要保证轮廓线时刻凸(初始轮廓线为左上边框),计数方案数,多组询问。

用 01 刻画轮廓线,分别表示横向与竖向,那么四种涂法(竖向,Γ 型,Γ 型旋转 180,横向)对应的变化为:

1110 => 0111
1100 => 0101
1010 => 0011
1000 => 0001

观察可知其对应任意两个下标差为 3 的 10 交换为 01,我们按照模 3 分组,问题变为计数 u 个 1 v 个 0 有多少种 swap 方式使其有序。

打表可以发现规律,也可以转回杨表,每次填一个位置求填满方案数,即标准杨表填数方案数,使用钩子公式:

(nm)!ij(i+j1)=(nm!)i=1n(i1)!i=1n(i+m1)!

随便预处理一下就好了,复杂度 O(nm+T)

290 CFgym102220A Apple Business

为啥都会做!!!

将订单的价格从大到小排序依次考虑,那么我们一定不会改变之前订单的销量。(改了一定不优)

我们只需依次最大化每个订单的销量,很容易建出二分图匹配模型,使用 Hall 定理:

对于任意订单子集,其在树上对应的最小连通块的苹果数量不能要求其销量和。根据经典的拆分方法,我们只用考虑每个树上连通块苹果数量减去其包含的订单销量和的最小值。

每个树上连通块在其最浅结点考虑,枚举这个结点,我们至少可以每次做一个 O(size) 的 dp 求出最小值。

预处理初始 dp 值,每次加入一条路径 uv 只会更新第一维是 u 祖先,第二位是 v 祖先的 dp 值,暴力枚举计算即可。

复杂度 O(nlog2n)(假设 n,m 同阶)。

291 loj#2476. 「2018 集训队互测 Day 3」蒜头的奖杯

较为套路。

列出式子:(E,F 为狄利克雷差分,C 为狄利克雷后缀和)

ijkAiBjCkDgcd(i,j)Egcd(i,k)Fgcd(j,k)=ijkAiBjCkDgcd(i,j)i,ksEsj,ktFt=sEstFt(s,tkCk)sitjAiBjDgcd(i,j)=gst[st]EsgFtgCstgsgitgjAiBjDgcd(i,j)

由于 stgn,因此 s,t 中一定有一个 n,不妨假设其为 s,我们枚举 g,s 考虑对每个 t 计算答案。

我们把后面的式子列出来,可以发现其类似 gcd 卷积,随便推一下:(令 sg=S,tg=TD 为狄利克雷差分)

SiTjAiBjDgcd(i,j)=dDdd,SiAid,TjBj=TjBjdTDddiAi[Si]

做几次狄利克雷前/后缀和就可以求出所有 T 的答案了,复杂度 O(dndndloglognd)=O(nnloglogn)

292 loj#3400. 「2020-2021 集训队作业」Storm

CODECHEF 原题:Selecting Edges

如果选的边成环一定不优,如果选出了一个长为三的链一定不优,因此方案是若干个不交的菊花。

二分图上是经典的最大权闭合子图问题,而本题流量限制可以将 EK 费用流复杂度分析到 O(k2(n+m)),一般图考虑随机黑白染色并使用二分图的算法,随机 O(2k) 次正确性基本没有问题。

293 loj#3401. 「2020-2021 集训队作业」Old Problem

列出式子,并泰勒展开 ln(1x)

exp(ln(i=lr(1aix)))=exp(i=lrln(1aix))=exp(i=lrk1aikkxk)

aix 较大时上述式子的精度要求较高,因此 k 的枚举量较大。而这样的位置显然不会很多,我们可以依次取出这些位置暴力计算,其余位置维护前缀和多项式计算即可。

294 loj#3409. 「2020-2021 集训队作业」Yet Another Linear Algebra Problem

Binet Cauchy 公式:

对于 m×n 矩阵 An×m 矩阵 Bnm),有:(AS,BS 表示列/行下标在 S 中的子矩阵)

det(AB)=|S|=mdet(AS)det(BS)

问题一:

由于 12221(mod3)

(|S|=m[det(AS)0])mod3=|S|=mdet(AS)2=det(ATA)

问题二:

记颜色为 ci,颜色全集为 U

|S|=mdet(AS)[xScx=U]

覆盖所有颜色等价于没有未出现的颜色,我们构造矩阵 B 使得 Bi,ci1 其余位置全 0,那么颜色互不相同等价于选出的行向量彼此线性无关,即 det 非零。

于是答案是 det(ATB),复杂度 O(n3)

posted @   xiaoziyao  阅读(141)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示