2019.09.06考试报告

特别鸣谢secret大神教会了我T3

T1简单的区间

跟原来的某道题思路一样,dfs+启发式合并

 

T2简单的玄学

ans=((2^n*m)-(2^n)-m+1)*((2^n)-m+2)...(2^n))/(2^(n*m))

30分算法:

暴力枚举1到m并按照式子计算

70分算法:

分母上只有2这个质因子,考虑对分子里的2进行提取,之后快速幂对1e6+3取模即可

时间复杂度O(m*log2(m))

100分算法:

通过上面的式子可以发现m很大的时候分子对p取模便成了0,所以可以直接break。

(注意break会导致分母里的2没有被减够,所以要预处理减了多少个,而不是在for循环中减)

 

T3简单的填数

二元组(x,y)代表当前位置填x,且一共填了y个。

贪心策略:让每个元素尽量只出现2次

用up[i],dn[i]存储上述二元组,表示当前位置能控制的范围

up[i].y代表填这个数能向前取同样的数的最大长度,dn则反之。

把序列扫一边便可以求出a[n],之后再反着扫一边求出一组解即可。

posted @ 2019-09-06 17:48  ATHOSD  阅读(90)  评论(0编辑  收藏  举报