随笔分类 -  小技巧

摘要:线段树 区间修改,区间求和 https://www.luogu.org/problemnew/show/P3372 代码 二分 二分,第一个大于x 可以这样理解,查找大于等于的,判断那里就是大于等于,查找小于等于的判断那里是大于 二维前缀和 垃圾炸弹 https://www.lydsy.com/Ju 阅读全文
posted @ 2018-09-27 20:54 lmjer 阅读(204) 评论(0) 推荐(0) 编辑
摘要:1.a^b可以写成 a*a*a*a....a(b个a相乘) 而b又可以二进制分解为 b=c*2^k-1+c*2^k-2.....+c*2^0(c为该数在二进制下对应数字) 所以 用b>>1可以舍去b的最低位,而b&1可以求出b的最低位 所以 2.64位整数乘法 求a*b%p 阅读全文
posted @ 2018-04-15 10:54 lmjer 阅读(113) 评论(0) 推荐(0) 编辑
摘要:把一个区间的操作换作转化为左右端点的操作然后通过前缀和得到答案 #include<cstdio> #include<algorithm> #include<cstring> #include<map> using namespace std; map<pair<int,int>,bool>check 阅读全文
posted @ 2018-03-15 18:20 lmjer 阅读(232) 评论(0) 推荐(0) 编辑
摘要:先将n质因数分解后,如n=x1^a*x2^b*x3^c 个数为 (a+1)*(b+1)*(c+1) poj 2992 #include<stdio.h>#include<string.h>int p[90];int v[432];int pn;int e[432][90];void pri(){ i 阅读全文
posted @ 2017-12-28 19:41 lmjer 阅读(495) 评论(0) 推荐(0) 编辑
摘要:1. 欲求, 如: 00111 依次前移 01011 01101 01110 10011 10101 10110 11001 11010 11100 例如 当k=00111时 获得01011 先找出k右起第一次出现1的位置,对这个位置+1,然后在右边 补上少了的1即可 如 00111+1 = 010 阅读全文
posted @ 2017-12-24 12:05 lmjer 阅读(160) 评论(0) 推荐(0) 编辑
摘要:【题目描述】近似整数(Approximation.cpp/c/pas) POJ 1650 给定一个浮点数A和一个整数L,求在范围[1,L]内的两个整数n和d,使得n/d能近似等于A,且使误差|A-n/d|最小。 【输入格式】 第一行为一个浮点数A,第二行为一个整数L。 【输出格式】 两个整数n和d。 阅读全文
posted @ 2017-11-24 22:11 lmjer 阅读(1337) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示