随笔分类 - 小技巧
摘要:题意:给你一个序列,让你找长度最长的字典序最小和最大的单峰序列,单峰序列就是满足先增后降的序列。 思路:先正着求一遍LIS,再反着求一遍LIS,然后用单调栈来模拟。 求字典序最小的话,首先找到第一个顶峰,然后往前找递减的序列中下标较小的,往后就依次找,这样能保证字典序最小。 最大的话找到最后一个顶峰
阅读全文
摘要:自补图的定义: 原图为G , 补图为H (H是在G的完全图上面去掉关于G图的边得到的新图),G和H为同构 同构的定义: 关于图的同构(Isomorphic),最简单的例子就是五边形和五角星了: 上图中,G1和G2为同构的,因为: 从G1的结点到G2的结点,存在一个一对一的映上函数 f (one -
阅读全文
摘要:我们最常见的标记某一些数,直接开一个数组去标记;O(1)插入O(1) 查询;但是初始化需要o(n) ; 有一些题目是需要在一个for()循环里面进行初始化 , 也就是说每循环一次都需要初始化,如果我们只是用数组标记的化,时间复杂度太大了;所以我们可以想到用set去标记 , 我们在set里面存入标记数
阅读全文
摘要:(n & m) == m 为奇数 C(n,0),C(n,1),C(n,2)…C(n,n).当中有多少个奇数 第一种想法是Lucas定理推导,我们分析一下 C(n,m)%2,那么由lucas定理,我们可以写成二进制的形式观察,比如 n=1001101,m是从000000到1001101的枚举,我们知道
阅读全文
摘要:long long 最大只有19位 ; unsigned long long 最大有20位 ,原因牺牲了符合位来换取更大的记录
阅读全文
摘要:/*num1/num2 保留bit 位小数 , 四舍五入*/ #include using namespace std; int OP[100]; int main() { int num1,num2,bit; cin>>num1>>num2; cin>>bit; int temp=0;///判断负数的个数 if(num1=5) { ...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include using namespace std; #define rep(i,a,n) for (int i=a;i=a;i--) #define pb push_back #define mp make_p...
阅读全文
摘要:今天zyb参加一场面试,面试官听说zyb是ACMer之后立马抛出了一道算法题给zyb:有一个序列,是1到n的一种排列,排列的顺序是字典序小的在前,那么第k个数字是什么?例如n=15,k=7, 排列顺序为1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9
阅读全文
摘要://O(1)快速乘 inline LL quick_mul(LL x,LL y,LL MOD){ x=x%MOD,y=y%MOD; return ((x*y-(LL)(((long double)x*y+0.5)/MOD)*MOD)%MOD+MOD)%MOD; } //O(log)快速乘 inlin
阅读全文
摘要:注意这里是将后台的所有数据都读入在计算
阅读全文
摘要:很浅显我们只要减去多于这位的0.x5,即可 例如保留5位小数 , printf("%.5lf\n",ans-0.0000005);
阅读全文
摘要:在用cin 与 cout 的时候 可以使用 这样在输入大数据的时候可以加快许多
阅读全文
摘要:大数因数分解Pollard_rho 算法 复杂度o^(1/4) #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <map> using na
阅读全文
摘要:#include<stdio.h> #include<string> #include<string.h> #include<iostream> using namespace std; //compare比较函数:相等返回0,大于返回1,小于返回-1 int compare(string str1
阅读全文