好久没写了 鸽了三次训练赛以及swerc的记录…慢慢补

这是牛客多校训练的第一场,感觉难度接近区域赛?稍微比区域赛难一些?

D

LYF签到

B

ZRC 初中几何 仅利用相似三角形和勾股定理就能做出来

A

LYF 博弈

题意:两堆石子,一堆n个一堆m个,每次在一堆中拿走x(>0)个,同时在另一堆拿走k(>=0)*x个,问必胜情况。1e4组 n m 5e3

解:

设win[x][y]表示一堆x个一堆y个时的必胜情况,不妨假设x<=y。

显然

win[0][0]=false

win[0][x]=true

win[1][x]=true

win[2][3]=false

win[2][!=3]=true

win[3][x]=true

win[4][x]=true

可以找到一些规律:

  1. 如果win[x][y]=false,那么win[x][>y]必然true,因此每个x最多对应一个false的y,比如2对应3,3对应2
  2. 别的某些规律

但是貌似没啥用处

我们观察数据范围 nm5000,很可能是n^2预处理一个胜负情况表

那么就暴力预处理试试(类似素数筛法,从小往大搞,如果当前位置不能win,那么能到达当前位置的状态都能win)

显然能做 就A了

F

WD ZRC辅助

题意:给定L和R,问之间有多少数包含是3的倍数的子串(0算作3的倍数)

解:

WD一眼看到就是数位dp,然而大家A得太快 有点不敢相信

重新思考后显然任意连续三个数一定能找到是3的倍数的子串,所以大于99的都在答案内。

H

WD

题意:给定一个数列a,有一个哈希函数,仅仅是对m取个模,问最小的能让哈希函数完美哈希的m是多少。n5e5,a值域5e5

解:

如果对m取模会导致冲突,那么就说明a中两个数的差是m的倍数

因此,只要对a中每两个数的差的集合取“不包含0的mex”即可

怎么在比n^2更优的时间里跑出来呢?FFT。把每个数都看成多项式的指数即可。指数是负的怎么办?全都加五十万

补I

暂时还没学会 待补

补K

题意:

给定值域0~n-1的b数组,使其与0~n-1这n个数一一匹配,使得
$$
\sum \sqrt{|b[i]-j|}
$$
与最小值的差距不超过百分之四。保证数据随机生成,每组数据内含一百组以上的子数据(其中保证有一半多是小数据),百分之四取所有数据差异值的平均值。

解:

比赛时一直在退火坑里出不去,也没有在本地试验满数据范围的收敛情况,白白浪费许多时间。但是积累了经验。

首先显然题目可以转化成带权二分图匹配问题。KM算法可以做到$O(n^3)$复杂度,因此对于小数据可以使用KM算法直接算出最优值,将误差值平摊下去。

对于大数据,考虑贪心和随机化算法并用本地随机数据验证可行性。结论就是这道题贪心是可以做到很优的。