BestCoder Round #84

2016年7月24日2,4552

1001 Aaronson

对n做二进制拆分,注意m对30取min


1002 Bellovin

直接输出F,显然是字典序最小的方案


1003 Colmerauer

用单调栈预处理下每个点向左/右第一个小等于它的元素,向上/下第一个大等于它的元素(一开始我用set预处理结果TLE)。

然后计算每个元素对答案的贡献,若设四个方向第一个使得其不能成为鞍点的数与其的距离分别为L,R,U,D

则其对答案的贡献为L*R*U*D*(L+R+1)*(U+D+1)/4


1004 Dertouzos

注意到满足题设条件的数一定是d的倍数kd,且k不大于d的最小因子,k*d小于n,且k是素数,预处理素数表后在其中二分即可

 

说点什么

提醒
avatar
就是张威

黄学长 03的贡献为什么是L*R*U*D*(L+R+1)*(U+D+1)/4