!114514

Sm(n)=i=0n1im=1m+1i=0mBm+1i(m+1i)ni,注意求和没有 B0

CF923D Picking Strings

经过手玩发现, B 和 C 等价,A 可以转化为 BB,B 等价于 AB。

于是先把所有极长的 AB 连续段缩起来,凡是后面有 B 的 A 连续段都可以被消掉,只用考虑最后一段。且注意到 B 的数量只能增加,若 [l,r] 中 B 的数量 > [l2,r2] 中无解。

若第一个 A 的数量 < 第二个 A 的数量无解。若两个区间末尾 A 模 3 相同,若第一个存在 A 就可以把 B 不断 + 2,因此若两个 B 的奇偶性不同无解。若第一个不存在 B 但第二个存在 B 也无解。

直接判断,O(n+q)

CF578E Walking!

将题意转化为:将原序列划分成若干子序列,每个子序列内部 01 交替,然后将所有子序列拼在一起,使得交界处也是 01 交替。最小化子序列的个数 - 1。

显然可以贪心解决第一问,能放就放,不能放就新建一个子序列。

对于第二问,求出首尾分别为 00,01,10,11 的子序列个数。若只有 00 和 11 显然可以直接拼(个数相等且最多只有一个)。若存在 01 和 10,将最后一个位置更靠后的一个数划分到另外一组就行。

CF568E Longest Increasing Subsequence

*3000 ?

cnti 表示 [1,i] 中 -1 个数,wi 表示 i 的可以填充的数的个数,则:

dpi=maxj<i,aj<aidpj+min(cnti1cntj,wai1waj)

拆开 min 后是一个三维偏序,直接做即可,容易记录方案。

CF1271F Divide The Students

注意到可行解中一定存在一组中的某一项是被占满的,否则可以不断调整(怎么都放不满除外)

考虑枚举这个组,设为 111 的第一组,那么除去只选了一组的人外,包含这个组的有三个,考虑枚举前两个,那么就可以唯一确定最后一个数在当前组选的个数,对于剩下 11 显然可以贪心找到空余最多的一组填充。

CF573E Bear and Bowling

什么阴间结论。

结论是:对于 dpi,j=max(dpi1,j,dpi1,j1+jai) 的转移,必然存在一个分割点 p,使得 p 之前的都不变,p 之后的都取到 ai

结论的证明可以打表得到,那么直接二分求 p 即可,在 p 之后的需要区间加一次函数,可以用平衡树打标记实现。

CF1661F Teleporters

显然相邻的两个传送点可以分开考虑,设 f(len,x) 表示在 [0,len] 中额外放 x 个传送点的方案,取到 lenx+1 距离的有 lenmod(x+1) 个,lenx+1 的有 x+1lenmod(x+1) 个,其差分 1x(x+1) 是单调不增的,因此 f(len,x) 是关于 x 的凸函数。而答案就是这 n 个凸函数的 Minkowski 和 m 的第一个位置。

考虑二分最后的斜率 k,于是对每个 len 都要取 f(len,x1)f(len,x) 最后一个数,当和 m 时停止,此时再 chk k+1 就能得到哪些取到的斜率 k

CF559E Gerald and Path

考虑离散化区间后 dp,将所有线段按照中点排序,设 dpi,j 表示考虑到前 i 个线段,目前覆盖的右端点是 j

将线段看做若干个小区间的和,当 i 向右扩展时 dpi,ridpi1,p+rip,否则需要对 i1 之前的方向进行讨论,令 [k,i1] 的区间全部取右边,那么就有转移 dpi,Rdpi1,li+Rli

时间复杂度 O(n2)

CF516E Drazil and His Happy Friends

g=gcd(n,m),显然编号为 i 的男生和 j 的女生能一起玩当且仅当 ij(modg),于是可以分成 g 组,每一组都是独立的。

P8261 [CTS2022] 袜子

半平面数点就是【UNR #4】己酸集合。做法是取块长 B 对序列分块,每块先将两两点的直线按照斜率排序,维护随着斜率变化的相对顺序(满足条件的一定是一个前缀)。最开始按照 (x,y) 排序,表示当 k= 时左下的点是最可能满足条件的。若两个 (xi,yi),(xj,yj),当 kyjyixjxiij 优秀,否则 ji 优秀。于是 >k 时,若 i 还比 j 优秀,就把 i,j 的在数组里面的顺序交换(重要性质:每次交换的都是相邻两个数),每次二分一个前缀即可。时间复杂度 O(nqlogn)

对于本题,考虑根号分治,当某一个颜色个数 >B 时直接对这个颜色拉出来做上面的过程将结果相加即可。处理的次数显然不超过 nB 次。

否则先将块的大小填充为 [B,2B) 之间,每种颜色只在一个块中出现,可以一起统计,每个点维护 cnt,cnt2,由于交换的都是相邻两个数,变化是容易计算的。

时间复杂度仍然是 O(nqlogn)

CF1085G Beautiful Matrix

枚举字典序第一个不同的位置 (i,j) 的值 bi,j<ai,ji+1 行之后的方案其实就是错排方案 fn=(n1)(fn1+fn2)。对于 i 行的 [j+1,n] 中的数,先选出它们能填的数与上一行(若 i=1 忽略)的交集大小,设为 cnt,那么有且仅有这 cnt 个数会受到上一行的限制,不妨把它们放在最前面,设 fi,j 表示 i 个数放在有 j 个特殊限制的格子方案,显然可以容斥计算 fi,j=k=0j(1)k(kj)(ik)!。不过 O(n3),考虑递推,枚举 i 位置放得是有无限制的数,可以得到 fi,j=fi1,j1j+fi1,j(ij)   (ij),否则 fi,j=(i1)(fi1,i1+fi2,i2)。注意一定不要将错排和 f 分开转移 !!!!1。然后就 O(n4)

先考虑得到 ai1,j+1n 中不在 ai,1j1 的个数,然后特殊考虑 w<ai,j 的取值,若 wai1,j+1n 就要把 cnt 减 1,因此可以用两个树状数组维护 w=x 时是否 -1 的个数,具体细节略。时间复杂度 O(n2logn)

CF1835F Good Graph

3500*

根据 Hall 定理,若二分图存在完美匹配,则对于所有 SL,|N(S)|S ,反之成立。若不存在完美匹配就随便找一个未匹配点不断 DFS,最后得到的 S 一定满足 |S|>|N(S)|,于是 NO 就做完了。

考虑怎么构造一个二分图使得和原图的 tight 集合一一对应。考虑将 tight 集合划分成若干个极小 tight 集合,使得任意 tight 集合可以由这些极小 tight 集合合并得到,考虑从点的角度出发找到包含它的 tight 集合,这样只要两个二分图的点的 tight 集合相等即可。

对于找到给定点的 tight 集合和上面的 DFS 一样,不过我们可以把这个过程看做 DAG 的形式,即对于原图上的 xy,若 y 不是 x 的匹配,连有向边 xmatchy,则 x 的 tight 集合为 DAG 上的可达点。

注意这不是个 DAG,于是先强联通分量缩一下变成 DAG,由于新图不一定是原图的子图,对于 SCC 中的点直接找边数最小的即可,也就是连成环,且若存在 xy,yz,若 xy 就可以把 xy 删掉,即 (x,y) 这条新边能保留当且仅当 x 能到达的点与能到达 y 的点无交,用 bitset 维护正反的传递闭包即可。

时间复杂度 O(n3w)

P1393 Mivik 的标题

萌萌题,建议评红。

dpi 表示 S 在 i 处结尾的概率,设 pb=m|S|S 的所有 border 集合为 T,则有转移:dpi=pbpTdpipmpj=1i|S|dpjpb

F(x)=idpixi,G(x)=i|S|xipb,H(x)=pTmp+i|S|pb,则 F=GHFF=GH+1,多项式求逆即可。

2023.8.9

SDOI2019 热闹的聚会与尴尬的聚会

第一问答案为 p 当且仅当存在一个所有度数 p 的连通块,显然可以二分答案解决。

然后 q 越大越好,根据最大独立集的近似算法多随几个排列去前面几个就好了?

别说,真过了。

时间复杂度 O(wys)

SDOI2019 连续子序列

考虑 T.M. 序列的几种生成方式:

  • fi=builtin_parity(i)
  • 初始为 0,每次在末尾加入当前序列的反转。
  • 初始为 0,每次把 001,110

显然第三种生成方式可以更方便的判定合法性。

考虑一个长度为 n 的串 S 合法,显然不能存在 3 个连续相同的,且若存在 =2 相同的划分方式唯一,否则形如 01010,当 n4 时划分方案也是唯一的。

因此设 dpS,k,每次枚举哪种划分合法,在 S

以后再想不到这些 trick 我就是 shik

  1. 平面图转对偶图:将所有线段极角排序后,对每个线段 (u,v) 找到第一个 <(v,u) 的边设为 preu,然后形成若干个环,其中存在一个外部节点,通过计算面积判断。[https://www.luogu.com.cn/problem/P3249](HNOI2016] 矿区)

  2. LCA 不一定要倍增求,当树的形态比较特殊时可以模拟倍增的过程。[https://www.luogu.com.cn/problem/CF1491H](Yuezheng Ling and Dynamic Tree),[https://www.luogu.com.cn/problem/P3248](P3248 [HNOI2016] 树)

  3. m 个位置分配给 n 个人,每个人有一个目标位置和初始方向,求方案数?

新加一个 m+1 点表示非法点,把 m+1 个点串成一个环,对于一个点未被分配的概率是 m+1nm+1 ,总方案为 (m+1)n2n,因此 (m+1)m12n(m+1n)

[https://www.luogu.com.cn/problem/CF838D](Airplane Arrangements)

定义一种合法方案的权值为所有人移动的步数和,再计数?

对每个人分开考虑,设 dpn 表示 n 个人 n 个位置的答案,为 (n+1)n12n=(n+1)i=1n(n1i1)dpi1dpni,再设 dp2 表示权值。gn,m 表示 n 个人 m 个位置的答案,转移枚举极长选择后缀=l=0mgnl,ml1dpl,再设 g2,i,j 表示权值。

[https://www.luogu.com.cn/problem/CF1439D](INOI Final Contests)

本文作者:henrici3106

本文链接:https://www.cnblogs.com/henrici3106/p/17575986.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   henrici3106  阅读(110)  评论(3编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.