不放密码了。

6.30

A.

暴力 期望得分15

全A dyh在zr讲过 期望得分15+30

按照全A解出每个串长度

考虑当前若干个串 可以找到s1+s2我们确定s1

看s2+s1是否存在 接下来同理

爆搜+回溯 No会被卡 期望得分75

STD:

先按长度第一关键字字典序第二关键字排序

按之前的删掉

接下来最小的就是s1+sx or sx+s1

如果出现s1Ts1的情况 我们可以分出两种情况

Ts1s1<s1Ts1 不存在 因为按字典序排序了

于是只存在s1s1T 这样的话我们就可以确定下来了

最后时间复杂度是$O(\sum L_i log^2 \sum L_i)$

B.

我们考虑A=B的情况 策略是堆成x堆A

最紧凑的情况是N/A堆A和N%A

发现joker一定可以这样凑 于是我们只考虑 (N/A)和N的差的奇偶性

继续考虑A>B的时候 神树可以通过把一些B堆一些A来最优 然后推个柿子(

B<A其实是同理…并不会/cy

更新:

A=B的时候 我们考虑的其实是$ (B-1) \& (N/B) \text{^} (N\%B-1) $

A>=B 我们都可以用这个柿子

$ ((n-(n+B-1)/B)\&1) || ((n-1)\%B+1<=(n-1)/B*(A-B)) $

B>A 我们用的是反过来的柿子

可以理解qwq

 

C.

用点-边=1的常见套路 维护一个历史最小值出现次数之和

A是一条链 扫描线 大概是维护历史最小值 维持历史最小值的时间 加标记 总时间 …  一共4个标记(要是我没数错的话

如果A是树 那么就是点分/dsu再套上上面那个玩意

另一个方法

拆成欧拉序 拆成3个矩形 第一个出现的点+1 第二次点-1 扫描线维护复杂度一个log 但实际上只是比log2快了1倍。。。

 

——————分割线——————

 

杂题选讲

Codechef June Challenge

Forgotten Tree 9

题意:一棵二叉树,我们中序遍历对其编号,每次只能询问x,A,B,系统会返回子树x中最小和最大的编号是否分别是A,B 限制3n次询问

询问出所有叶子 接下来每个叶子开始缩链 貌似最后优秀的实现可以达到O(3n/2)

然后zyb给出的另一种做法就是通过每一次询问成功确定一个点或者失败代表子树结束 最后复杂度是O(2n)

 

find a Peak in 1D array

题意:数列里数互不相同 满足 a1<a2 an-1>an 找到一个位置ax>max(ax-1,ax+1) 每次询问出一个位置的值 问最少询问几次能找到

发现一个区间中大小关系满足a1<a2 并且 am-1>am 区间内一定存在一个解 那么我们可以二分位置来确定 次数O(2lgn)

 

find a Peak in 2D array

题意:上头那个题扔到2D

随机撒O(n)点 再通过爬山 确定 期望O(3.5n)实际2n左右

确定性做法:找一行的最大值如果不是答案那么只要递归比他大的一边就可以了 随机交换行列 做到询问3n

貌似上面两个题都是zhengrui的题emm

 

找出现两次的数

大小n+1的数组 每个元素都是[1,n] 一个数出现两次或以上 其他数不一定出现过 O(n)时间 O(1)空间 不允许修改数组

i向a[i]连边然后floyd判环 大概就是类似于rho的一个玩意 最后可以找到rho的接点就是答案

发现n+1一定没有入度 所以可以直接从n+1开始判就可以了

 

几排数

做过 忘了 哭了

找出每一行 把这些串的所有子串建AC自动机 然后尝试在所有子串后面拓展 如果fail无法拓展则不拓展 如果拓展成功就可以那么可以一直拓展 证明失败的询问只有2n^2次

zbl

 

JOISC2019

Minerals

题意:有n种东西 每种都恰有2个 有一个设备里插入一个东西 或 删除一个 或 询问这个设备里有多少种不同的东西 N43000 要求10^6操作(询问不算操作)将其两两配对

发现要求其实是nlgn

然后我们通过整体二分 我们把左边全部放进去 然后右边放进去取出来来匹配 然后我们通过一些操作每次分两部分 这样就是2nlgn 然后开始卡常

我们每次取出小的那边 T(n)=T(x)+T(n-x)+min(x,n-x)+n 发现最优的点在x=0.38左右 于是我们发现操作数在惊人的999976次!

 

CF1028G

貌似sun和袁神尝试做过emm 做法是dp[i][j]表示x>i还剩j次询问机会 最远能确定多大的x

就是从i开始找到x再从x继续dp

 

CF1060H

Sophisticated Device

考虑用$xy=\frac{(x+y)^2-x^2-y^2}{2}$

通过高斯消元解$(x+0)^d…(x+d)^d$来求$x^2$ 

 

7.1

A.

不考虑内角 任意选三个点任意排就有5分啦

90° 一个一个弄【散人小游戏 大雾 就有27分啦

wucstdio做法 自定义函数通过找两个很近的三角形 然后通过一系列交换得到顺时针轮换

长这样 然后讨论一下4个象限然后改造一下 最后达到内角是62.5 然后我们可以选择三个来减小角度达到优秀的62.25 然后就稳啦

残暴的std:

把满分三角形提出 一共有1694个 可以通过蝴蝶形轮换【考场命名 大雾】达到任意轮换

通过人脑轮换/代码轮换 就可以了(

 

B.

trie维护一下???草??

 

C.

神树神J分开算

然后人类智慧/cy

组合数前缀和 莫队

 

————————分割线————————

 

LOJ6677

观察可得是是一个立体图 里面要放若干立方体 一个立方体存在当且仅当下面的所有小立方体和里面的小立方体全部存在

可以推出柿子发现是杨表(?)行列均非严格递增 套个公式就做完了 强行推结论QAQ

有点意思的题

 

DFSDFS?DFSDFS!

有向图DFS序数量 n<=17

f(i,S)为答案 从i开始走完了S g(i,j,S) 是一个集合S\’ 表示在i S维护dfs链 走完子树j后的S\’ 转移:枚举走哪个子树即可 复杂度O(n^2*2^n)

 

CF 441E Vaiera and Number

这里

 

CF 618G Combining Slimes

生成一个很大的数概率非常小 于是只用计算生成的小数的贡献

要多考虑1被2截住的转移

 

PE645

 

快速计算

求其生成函数 拆开三项

组合数二项式定理 三项卷积然后卷积

打表或者求导发现是低次整式递推式

 

一道常数很大的题

有n个数 求多少个bi<=ai 使得bi-1<=bi 序列计数 n2e5

可以转化NE Lattice Path(x

考虑用分治来做

找到中间断层来做 通过FFT来获得答案

 

Joker做题

斯特林展开

好的 斯特林数我还是不会/cy

 

LOJ3071

这里

 

7.2

A.

爆搜很稳…

正解3^(n/2)lg 就是meet in the middle找到(A,B,C) 求的是二维偏序A+A\'<=B+B\'<=C+C\’ 被爆搜艹爆了

 

B.

考虑点分 路径会被分成两部分 w分成w/2和w/2 如果一段被减成0就重构 每一部分只会重构logw次 所以总共是 O(nlg^2n)

分成两部分就是在点分树上找到分治的节点切开即可 每次从x减的时候就是子树减 所以维护树套树(线段树套点分树)即可

(好稳啊)

 

C.

大概就是一个合法方案对应的是左边到右边的一个不交路线 然后可以dp得到左下到右下的双射关系…然后

 

——————分割线——————

连线

最终答案是两个团

考虑度数最小的点d 一定是连出去有d个 发现一定是两个团 每个点度数为d

 

最优LIS

维护以i结尾的lis长度 区间平移 区间加 区间取max 平衡树维护

 

博弈

dp求d(i,j)表示走到i已经得到j 可以注意到这是一个分段函数 每次移动就是将数组移动ai的距离 最后复杂度是O(sigma ai)

 

Meal Plan

高斯消元容斥求系数

bell数

 

排列

要找到一个字典序较小的哈密尔顿回路 可以通过数据结构维护

 

鸡排

随便维护两种鸡排的数量就可以求出b

维护对于每个二进制维为1出现的多少个鸡排

 

BZOJ1386

这里

 

Codechef QGRID

这里

 

7.3

a忘记记题解了 但比较简单应该能直接记住吧。。。

 

LUOGU5439

这里

 

51nod1819

树链剖分 我也不会 这里

 

不知道哪里看来的题

这里

 

uoj268

zyb的做法:链上点+w 边-w 维护最大带权直径 链加 但是对于一条链只会+w/+0/-w 所以只需维护和一条链有交/无交即可

性质:两条链相交当且仅当一个链的lca在另一条链上 直径一定是叶子到叶子

动态dp维护即可

 

Codechef Union on Tree

这里

 

所有链的颜色数

对于所有颜色建虚树 基数排序+O(1)LCA

 

CF564 1E

QAQ

 

BZOJ4771

这里

 

7.4

A.

考虑拆成8项 然后维护前缀极值 前缀极值和

可以用状压来维护前缀极值 前缀极值和

 

B.

可持久化平衡树维护复制 (草

然后还是一个log?

STD->可持久化avl

 

C.

窝A掉啦

 

——————分鸽线——————
接水果

这里

 

LOJ 6073

满足差分性

 

某经典问题

每个节点维护一个可持久化平衡树 然后在DAG上按拓扑顺序合并

只取前k个节点

 

LOJ6145

点分树 对于每个分治中心线段树维护最小值 O(nlg^2n)

 

某经典问题

树上主席树

 

不知道哪里看到的题

先考虑序列上分裂合并 然后求区间一个数的出现次数

分块!【终于出现了!

 

luogu3676

这里

发现换根可以不换

考虑换根时点权的变化

可以推柿子得到每个点维护点权和 点权平方和 然后只需要维护dfs序树状数组

LCT练习好题(

 

BZOJ4231

可以查跟到某点的路径上某个字符串出现的次数 然后u到lca差分掉 lca到v将串翻转求出 然后暴力求跨过lca的

求出差分数组可以用离线建出AC自动机 在树上匹配即可

 

BZOJ3123

启发式合并树上主席树

 

BZOJ3881

AC自动机+树链的并+DFS序+树状数组

 

BZOJ2238

沙比题

 

BZOJ4530

强在:LCT维护子树信息

时间:离线+并查集+树状数组

 

CF757G

这里

 

BZOJ4668

离线=归程

强制在线=带权并查集按秩合并+暴力LCA

 

codechef prime distance on tree

柿子写出来是这样的

$ans[i]=\sum_{j=0}^n sum[i-j] * sum[j]$

于是FFT优化即可 O(nlg^2n)

 

loj6276

颜色分类一下

 

7.5

A.

考虑建出二分图 然后是前缀连边 且单调不降

必须极大匹配

考虑没有被匹配的最大的b如果它连的的前缀里有没有匹配的 就是不合法的

我们设f[i][j] 表示前缀i匹配了j个

左边有i个点 然后前缀中匹配了j个

g[i][j] 并没有搞懂。

设f[i][j][k]表示前i个里匹配了j个

这里

O(n^2)做法

f[i][j][0/1] 不枚举分界点

前i个位置 还有j个要匹配 是否到了分界点

0 如果没有到分界点 a就必须匹配 b可以匹配可以不匹配 再考虑转移到1的情况

1 加进来的b必须匹配 加进来的a直接不考虑

 

B.

沙比题

 

C.

学习如何写一个只有插入的红黑树/cy

 

BZOJ4448

可以把询问都换到修改后面 不会/cy

 

BZOJ4568

垃圾题

合并线性基比较慢 可以考虑插入一个数 树分治最后合并线性基

 

BZOJ4571

这里

 

某hr的题

用n个bitset维护一下 然后定期重构

 

某cf题

x->(1<<x-\’a\’) 查多少链的异或值=(1<<i) or 0 所以点分一下就行了

 

Codechef DGCD

 

codechef rectangle query

容斥二维数点就好了

 

O(1)GCD

这里

 

LUOGU4587

翻log次

 

【UNR#1】 火车管理

可持久化线段树一下

 

Codechef Push the Flow!

圆方树链上一种做法 环上两种走法 要使最小值最大 树剖可以维护

可以转成最小割 可以LCT维护最小值

 

CF986E

 

Codechef Tsum2

建凸包

 

CF650E

两个树上一样的边类似缩点

 

CF840E

这里

 

CF436F

这里

 

LOJ6576

维护历史最大值 差量 区间加 然后讨论更新

 

LOJ6507

这里

 

7.6

A.

把C排序 然后暴力dp就有O(n^5) 40pts

优化一层i 就有O(n^4) 因为剩下的一定在子树内部 然后再枚举有多少在当前节点结束

换一个算代价的方法 把一次考虑一层变成一次考虑一个 O(n^3)就能过了qwq

 

B.

n=2 暴力dp

如果起点颜色被分为k段 把答案乘以$\sum a_i$ 再除以k就行了

a1=1 序列

思路竟然是一样的…

然后第二步要容斥

正解

上面两个合并一下

 

C.

建一棵回文树 链加链求和

 

——————分割线——————

 

BZOJ4671

就是集合划分容斥线性基

 

BZOJ3600

考虑将每个元素赋上权值 

替罪羊树暴力重构

 

没有名字的题

可以证明答案不会大于min(a[i+n/2]-a[i])

所以构造一下即可

 

BZOJ5093

第二类斯特林数+NTT

 

BZOJ4851

这里

 

BZOJ4830

这里

 

BZOJ3925

这里

 

BZOJ4289

这里

 

后面记得好草率啊(

版权声明:本文为hanyuweining原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hanyuweining/p/11109581.html