2019-team154-020
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
== 概述 ==
上海网络赛
[https://www.jisuanke.com/contest/3003/ 计蒜客3003]
team2137
[[Image(Shanghai.png,700px)]]
== 总结 ==
=== dafu456 ===
上海网络赛,怎么全是计数问题呢????
网络赛通病:读不懂英文???
虽然今天的体验有点狗屎,但是还是一场“可圈可点”的比赛?过题大师peh过掉了BJL,我用爆搜过了D,dzf预处理然后暴力过了F(好像很容易写挂的样子),都是1A诶。最后剩一个小时的时候我和dzf弄出了C题的做法,peh提示中间一个过程可以用FFT做。我写了N^2的代码交给dzf把其中一个部分替换成FFT。但是dzf并不会写FFT,peh也不太记得了,看了红书就往上写了,过程非常曲折,代码非常长。好不容易四十分钟左右写好了,过了样例,交上去T了。peh说用自己的板子试一试,结果还是T了。T的原因是我们用了9次DFT就T了,其他人都是6次所以过了。。。。。。期间peh也知道A题用点分治就可以过了,然而也好久没写了。。。。
所以,FFT要好好学55555,点分治要好好学。
有很大的遗憾,马马虎虎吧。
=== 题解 ===
C:先对A中每个元素与B中每个元素的和进行计数,虽然数很多但是范围一定在[2, 200000]中间。再计算C的计数的前缀和。再算出因C过大而不合法的方案数,cnt[i] * (n - sum[i])求和。考虑将A过大、B过大、C过大加起来,就得到所有不合法的情况,用全集减去即可。在计算和的计数的时候,需要用到FFT。
D:推一推发现最多只有12个数字不是1,爆搜即可。中间计算组合数过程会爆long long,提前预处理出逆元即可。
F:总共就26位,顺次枚举这一位应该是哪个字母即可。当然,要提前预处理,26*26,f[alpha, pos]表示alpha第一次出现在pos,且在pos后面都是A的时候,的名次。
概述
上海网络赛
team2137

总结
dafu456
上海网络赛,怎么全是计数问题呢????
网络赛通病:读不懂英文???
虽然今天的体验有点狗屎,但是还是一场“可圈可点”的比赛?过题大师peh过掉了BJL,我用爆搜过了D,dzf预处理然后暴力过了F(好像很容易写挂的样子),都是1A诶。最后剩一个小时的时候我和dzf弄出了C题的做法,peh提示中间一个过程可以用FFT做。我写了N^2的代码交给dzf把其中一个部分替换成FFT。但是dzf并不会写FFT,peh也不太记得了,看了红书就往上写了,过程非常曲折,代码非常长。好不容易四十分钟左右写好了,过了样例,交上去T了。peh说用自己的板子试一试,结果还是T了。T的原因是我们用了9次DFT就T了,其他人都是6次所以过了。。。。。。期间peh也知道A题用点分治就可以过了,然而也好久没写了。。。。
所以,FFT要好好学55555,点分治要好好学。
有很大的遗憾,马马虎虎吧。
题解
C:先对A中每个元素与B中每个元素的和进行计数,虽然数很多但是范围一定在[2, 200000]中间。再计算C的计数的前缀和。再算出因C过大而不合法的方案数,cnt[i] * (n - sum[i])求和。考虑将A过大、B过大、C过大加起来,就得到所有不合法的情况,用全集减去即可。在计算和的计数的时候,需要用到FFT。
D:推一推发现最多只有12个数字不是1,爆搜即可。中间计算组合数过程会爆long long,提前预处理出逆元即可。
F:总共就26位,顺次枚举这一位应该是哪个字母即可。当然,要提前预处理,26*26,f[alpha, pos]表示alpha第一次出现在pos,且在pos后面都是A的时候,的名次。
附加文件
- Shanghai.png by dzf