模拟测试20190918

Posted mikufun-hzoi-cpp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟测试20190918相关的知识,希望对你有一定的参考价值。

诶这次考得其实挺炸的诶

然而结果还行?

莫不是前几次考得太炸导致$ rp++? $

上来看$ T1 $成功理解错题意

想不到正确复杂度的做法所以只能打暴力

打了个$ n^2 $的暴力然而他A了?

yyT2了1h然而无果

看T3,先打了个普通$ O(nlogn*2^m) $的暴力

然后又改了个01trie的$ O(nlogn*2^m) $暴力

然后改成了$ O(n^2m) $的背包

然后试图优化背包无果,$ 50pts $滚粗

总分$ 100+0+50=150pts ,rank6 $

继续努力啊

$ T1:  Set $

好神啊

题里给了n个数,所以会有n+1个前缀和

而在$ mod n $意义下一共只有n个数

那么至少有两个前缀和是相等的

那这两个前缀和之间的数之和一定是n的倍数

 

$ T2:Read $

好神啊

要想每天读书的种类都不同 , 就要求每一种书的数目不超过其它书的数目 +1,

所以只要看是否有一种书超过了 (N+1)/2. 本题空间限制很小 ,

但是 N 有很大 , 所以不能用数组存下来 , 但是我们只要找到超过(N + 1) / 2 的书 ,

所以我们用两个变量 id, cnt, cnt 初始为 0.

每一个 A[i], 如果 cnt==0, 那么就令 id=A[i],

如果 id==A[i], 则 cnt++, 如果不等于 , cnt--.

最后只要再扫一遍求出 id 的出现次数即可

 

$ T3:Race $

对于所有A建出来$ 01trie $

那么观察每个数,他的答案就是他01trie上的那条链两边的点的size所能组成的所有值的平方

但是这样做是$ O(n^2m) $的

设所有两边点的szie为a[0]~a[m-1]

对于一个平方式,把他拆开来分别统计每一项的贡献

一个平方式$ (a_0+a_1+......+a[n])^2 $拆开后分别有$ a^2 $和$ 2a_ia_j $两种项

对于$ a^2 $,他的答案就是$ a^2*2^m-1 $

对于$ 2a_ia_j $,他的答案就是$ 2*a_i*a_j*2^m-2 $,可以直接$ O(m^2) $暴力统计,或者求个$ \sum\limits_i=0^m-1a_i $可以$ O(m) $

总复杂度$ O(n*m) $

以上是关于模拟测试20190918的主要内容,如果未能解决你的问题,请参考以下文章

模拟测试特征和模拟方法

对于 Java 测试,我应该模拟客户端还是模拟服务器

带有模拟的 MvcTest 是集成测试或单元测试

再说模拟测试

模拟HttpContext单元测试

Jmeter 压力测试模拟