NOIP 模拟 十一
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
易得:
- 先把矩形搞成线,把每一个点拿下来,再根据数目\(sort\)。
- 对于每一个不同种类的格子,数目要单调递增。应该尽可能多的选不同种类的格子。
基础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早了,导致在个位上的贡献没干进去,调了好久。。。。