题目质量不错(至少所有题目都有人过,是吧?)。
出题人之一 (ultmaster) 遗憾地表示:
这届水平不行啊。。。
ultmaster edited 7 年,4 月前
Prepared by kblack.
计算每一个点数模
Prepared by kblack.
虽然限制只能走马步,但我们很容易意识到在足够大的棋盘(例如象棋棋盘)上,马可以达到任何位置。事实上通过简单的验证,可以发现这一大小的下界是
于是对于所有
当棋盘大小为
当棋盘大小为
当棋盘大小为
注意答案可能超过 long long
类型。
Prepared by ultmaster.
我们可以先考虑字符串有序的情况,比如是 aaabcc
,我们只要将字符串右移 3 位,变成 bccaaa
,就做完了。那么对于无序的情况,我们可以通过排序让它有序,做完之后再排回去。
显然最多的字母出现次数大于一半的情况是不行的。否则就将每个字母的位置和字母绑定一下,按字母序对结构体进行排序。然后右移「出现最多的字母出现次数」位,再排回来就可以了。时间复杂度
也可以对 26 个字母进行遍历,把每个字母填到合适的位置。具体细节留给读者思考。
Prepared by infiniteee.
又到了喜闻乐见的套路题时刻。
一个很显然的想法是对左边的
求素数可以使用朴素的
也可以二分答案直接跑二分图,姿势好一点也能过。
Prepared by kblack.
Easy 部分可以简单的用
可以发现,购买棒棒糖,相当于是在做最大容量为
答案即是这个生成多项式的
注意到第一部分可以由一次简单的 01 背包实现,复杂度
Prepared by ???.
不知道什么地方挖出来的一道题目,稍微改了下。可能是原题啊。如果有人知道来源的话不妨透露下啊?
Easy 可以简单地跑一遍 Floyd,然后发现是一个线性方程组,然后跑一下 Gauss Elimination。Done!
注意 printf("%.0f")
是不对的!会输出 -0
!
我们不难留意到一个事实,对于一条边上的两个点,我们做一次减法,得到的就是这条边所连的两个连通块的和的差值。假设该树以 1 为根,我们记第
那么我们怎么求
那么利用这一个方程我们就可以解出
有一个坑点是,本题数据范围没有给,需要从答案的范围反推数据范围,很显然要开 64 位整数。
Prepared by BelowLuminous.
考虑离线处理。将所有查询和母串相连建后缀数组。对于每一个查询,在排好序的后缀数组中恰好有一段相对应,可以二分求得
事实上本题的做法非常套路,所以过得人也比 F 多(???)。
据验题人说暴力加疯狂特判也能过,而且玄学优化不可卡。暴力姿势太大,比不来。
原创。
如有雷同,那也没有办法,毕竟比较裸。