知识点(自用)

正数的补码就是它负数的二进制

滑动窗口

树状数组(n皇后)(在二进制中,44到-44:二进制取反+1)

二分(整数二分,浮点数二分)

全排序:

好数组的求法(数组元素数等于元素之和)

kmp(模板+理解)

关于map:map<p(结构体),ll> m,这样子如果未赋值,直接用是非法的;但是map<int,int>却能默认为0(如果想写二维数组,map<int,map<int,int>> m嵌套即可

对于sort自动排序,默认为升序(从小到大),但是构建cmp如何呢

struct p{ll a,b;};      bool cmp(p v,p c){    return v.a<c.a;  }(升序cmp)返回值即所需排序

万能头文件中,y1被定义过,所以y1不能用做全局变量

gcd(裴蜀定理) 有点抽象,而且不常见,可以去错题找找再看一下(计数器)

gcd函数,求最大公约数

乘法逆元(exgcd) 同余方程及其应用

费马小定理  a的p-1次方≡1(mod p)   1到n的平方和 :n*(2*n+1)*(n+1)*6^(p-2)

函数substr   s.substr(截取的字符串在s中最先出现的位置,截取字符串的长度)

当变量超过了定义类型的范围时,会使正数变为负数

array<type,num> 的使用,可以直接生成数组,也可以用于vector<array<int , 4(必须是一个确定的常数,不能是变量)>>等

卡特兰数 递推求取

unique(a.begin(),a.end()) 会使有序数组a 将重复的元素滞后

但是配合上了erase:a.erase(unique(a.begin(),a.end()),a.end);能够将重复元素消除

由于多组样例,有时候直接在每组t里开数组或者map或者memset清零会导致直接超时,

可以在外开数组,然后直接每次从1到n 用for清零

任意的一个数字A=p1^k1*p2*k2*....pn^kn 则有这个数的约数之和(p1+p1*2+..+p1*k1)*(p2......)

与此同时, 1到A与A互质的数的个数A*(p1-1)/p1*(p2-1)/p2....(pn-1)/pn 

费马定理 当p为素数,并且gcd(a,p)=1时,有a^(p-1)≡1(mod p) 

getline(cin,s)读取一行

可以用set<int> s(a.begin()+num,a.begin()+numm) 将 下标从num到numm的vector数组存进set

 multiset与set区别,set的insert只能对一个值一次,multiset能有多次具体可查以下链接

同时multiset中的lower_bound返回迭代器,可以用auto定义

multiset用法总结-CSDN博客

继续补充捏  (忘了,看到了再记一次)

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值