2015-2016 Nizhny Novgorod SU Contest
Jump to navigation
Jump to search
Problem A
Upsolved by kblack.
Problem B
Solved by ultmaster. 01:01 (+)
题意:挺复杂的。英文水平不行。
题解:模拟。签到。
Problem C
Solved by ultmaster. 03:37 (+1)
题意:求 A-E 的字符串和 a-e 的字符串在建立合理映射并旋转后最多能有多少个位置相同。
题解:关键是要算出状态 $f(i,j,k)$ 表示旋转 $i$ 后 $j$ 对应 $k$ 的数量。置要用到的位为 1,然后做 25 次卷积。然后枚举置换求一求就好了。两倍的 NTT($2 \cdot 10^5$)似乎不行,降到一半之后卡过了。也不知道常数为什么这么大。
Problem F
Solved by kblack. 01:47 (+3)
题意:
Problem G
Upsolved by ultmaster. (-5)
题意:求 winner 数量的操作如下:将序列排序,求有多少个数比这个数前面的所有数加起来都要大。有修改操作。
题解:
ultmaster (题解中的方法):
利用 winner 数量不会太多的性质,可以使用当前找到的 winner 的前缀和寻找第一个符合要求的数,然后验证是否成立。不管是否成立都将前缀和替换成新的前缀和继续迭代。单次询问复杂度是 $O(\log MAX \log (n+m))$。要开一个 set 和一个树状数组然后交替插入询问。一开始不知道为什么写了二分树状数组,折腾了好久发现完全没用。 刚开始离散化也是比较麻烦的。由于是个多重集要考虑相等的元素算同一个还是算不同的。我的方法是增加 pair 的第二维强行把这些元素区分出来。但是结果好像还是没有避免序列最前面的两个数要特判的问题。
Problem H
Solved by zerol. 00:21 (+)
LCT 模板题。签到。