10 2016 档案
hdu 5382 GCD?LCM!
摘要:先考虑化简f函数 发现,f函数可以写成一个递归式,化简后可以先递推求出所有f函数的值, 所以可以先求出所有S函数的值,对于询问,O(1)回答 代码: //File Name: hdu5382.cpp //Author: long //Mail: 736726758@qq.com //Created 阅读全文
posted @ 2016-10-26 14:44 _fukua 阅读(261) 评论(0) 推荐(0)
hdu 5381 The sum of gcd
摘要:知道对于一个数列,如果以x为左(右)端点,往右走,则最多会有log(a[x])个不同的gcd,并且有递减性 所以会分成log段,每一段的gcd相同 那我们可以预处理出对于每一个位置,以这个位置为左端点和右端点的时候,分别产生的gcd的值和分界处 那么这道题就可以用莫队算法了,O(n * sqrt(n 阅读全文
posted @ 2016-10-26 14:40 _fukua 阅读(218) 评论(0) 推荐(0)
Atcoder CODE FESTIVAL 2016 qual C 的E题 Encyclopedia of Permutations
摘要:题意: 对于一个长度为n的排列P,如果P在所有长度为n的排列中,按照字典序排列后,在第s位,则P的value为s 现在给出一个长度为n的排列P,P有一些位置确定了,另外一些位置为0,表示不确定。 现在问,P的所有可能的排列的value之和 n <= 500000 思路: 对于一个可能的排列,它的va 阅读全文
posted @ 2016-10-26 14:31 _fukua 阅读(363) 评论(0) 推荐(0)
51nod 最近刷题 简要题解
摘要:51nod 1564 由于数据是随机的,可以证明,对于每一个数,向左或右找比它小的数,长度是logn级别的 考虑枚举最大值 注意,对于每一个最大值,如果直接用2个循环枚举左右端点的话,理论是lognlogn级别的,但是还是很容易被卡的,换成贪心,用2个指针指着左右端点,每一次移动我们往数大的那个方向 阅读全文
posted @ 2016-10-11 10:39 _fukua 阅读(443) 评论(0) 推荐(0)