首页 > 技术文章 > NOIP 模拟 十一

zhaoxubing 2021-10-02 06:20 原文

T1 math

分析性质,对于

\[ax+by=c \]

\[gcd(x,y)|c \]

所以

\[gcd(a_1,a_2 .....,a_n)|num \]

换句话说就是最后得到的数一定是 GCD 的倍数。

再看

\[(a* b )mod k=((a modk)*b) mod k \]

所以对于\(modk\)意义下的剩余系0——k-1扫一边乘上 GCD 即可。

T2 biology

易得:

  1. 先把矩形搞成线,把每一个点拿下来,再根据数目\(sort\)
  2. 对于每一个不同种类的格子,数目要单调递增。应该尽可能多的选不同种类的格子。

基础DP:

\[f_i=max(f_i,f_j+val_i+abs(x_i-x_j)+abs(y_i-y_j)) \]

这个考场上很快就推出来了,但是只有\(40pts\)

优化:对于本层的i,其最优只能是由上一层转移过来,由2得。

最后加上优化有 $60 pts $。

然而其实优化DP,主要从曼哈顿距离入手,就是把绝对值拆开,分别维护4个值。

似乎得用4个树状数组,但是会 \(TLE\),其实并不需要用,只要记录下 \(max\) 就行。因为如果i ,j不合法,那么会出现负这样一定不是最优,一定存在合法的i,j比其更优。所以对最后答案无影响。

T3 english

考场上一看单异或就暴了,时间也不够了,所以打了个暴力骗了\(20pts\)

首先是区间最大值,单调栈扩出左右端点易得。

SUB1:异或的话肯定拆位。找到左边各二进制位上0 1的个数以及右边的,贡献肯定就是左0右1 左1右0。这么处理主要依据异或位与位之间是互不干扰的。

SUB2:建起主席 trie,然后比较左边右边哪个值少就枚举谁,跟相反的那一边匹配,由size得到cnt,乘上 maxn。

注意mod不要忘。

调试过程中由于dfs return早了,导致在个位上的贡献没干进去,调了好久。。。。

推荐阅读