摘要:
U29473 【题目链接】 https://www.luogu.org/problemnew/show/U27076 【算法】 我的算法比较渣,最多n=1e5个数,于是离散化,记录每个数出现次数。 然后判断是否是质数,每个数范围为1~1e12于是只需判断是否能能被1~1e6范围内且小于它的1/2次方 阅读全文
摘要:
【算法】 选取pivot,然后每趟快排用双指针扫描(l,r)区间,交换左指针大于pivot的元素和右指针小于pivot的元素,将区间分成大于pivot和小于pivot的 【注意】 时间复杂度取决于pivot的选取是否能把(l,r)区间分成长度相等的两个子区间。 最优:O(nlogn) 最差:O(n2 阅读全文
摘要:
【算法】 lowbit()运算取出非负整数n二进制表示下最低位的1及其后的0表示的值: 对n按位取反后加1(即补码操作,-n),最低位1即其后位的表示不变,而之前的每一位均取反了,于是按位与即得到所需的值。 【应用】 1.树状数组 2.配合Hash找出n二进制表示下为1的位 阅读全文
摘要:
【题目】 求a乘b对p取模的值,其中a,b,p均小于等于1e18大于等于1 【算法】 类似快速幂的二进制思想,将b看作一个二进制数展开为各个二进制位的值相加取模 【算法】 a * b mod p = a * b - [a*b/p] * p (感觉这种有点不靠谱,最好别用,涉及浮点就开始玄学了) 阅读全文
摘要:
【题目链接】 http://poj.org/problem?id=1995 【算法】 阅读全文