一些小知识

C++编程技巧与算法优化

 

使用 bitset()可以快速输出某数二进制                                                                                                                             cout<<bitset<8>(x);                                                                                                                                                                    马上输出x的八位二进制数

#define  PI acos(-1.0);                                                                                                                                                            求反函数用a加上函数类型就行了,而且结果是弧度制,double型;

scanf可以输入格式;                                                                                                                                                             输入:UTC+8                                                                                                                                                                             char c;                                                                                                                                                                                       int x;                                                                                                                                                                                           scanf("UTC%c&d",&c,&x);                                                                                                                                                         c='+',x=8;

s.size()的返回值是unsigned类型,如果有用s.size()-x(x>s.size()),这个时候一定要注意类型转换;                             qwq还是直接把s.size()转成int或者long long在计算把;                                                                                                         (qwq今天问了大佬这个问题,大佬说要自己多动手调试,这里一定要记下来,养成问别人的习惯就不好了,自己多动手!)

结构体排序完按输入的顺序输出,只需要在按输入顺序排序一下结构体就行了;

计算a到b中有多少个k的倍数:b/k-(a-1)/k;

https://blog.youkuaiyun.com/smf0504/article/details/51426750                                                                                                       C/C++中nth_element函数: 找到数组中第k小的数,时间复杂度为O(n);                                                                                nth_element(first,kth,last)        first和last表示部分排序的区间为[first,last)
指针kth表示完成后,这个位置的元素是第(kth-first+1)小的(注意first是第1小的)

    priority_queue<ll>q;   优先队列默认按从小到大排列,也就是q.top()为最大值,        priority_queue<ll,vector<ll>,greater<ll> > q;                                                                                                                                    重载后按从大到小排,也就是q.top()为最小值       

 数列 1 3 5 7 9的和为n*n

next_permutation(a,a+n)  全排列函数,返回下一个排列,没有下一个则返回false                                                               while(next_permutation(a,a+n)){}                                                                                                                          prev_permutation(a,a+n):同上,返回上一个排列;

钩子公式:n!除以(每个格子的钩子长度+1的乘积),钩子长度指的是格子右边和上边的格子数(数值递增的两边),钩子公式算的是固定形状的杨氏矩阵的个数;杨氏矩阵指的是每个格子上边的格子和右边的格子都递增的矩阵;

组合数: c(n,m)=c(n-1,m)+c(n-1,m-1);  (原来人家是有规律的,这么多年一直没发现,嘤,笨比报道)                              打表的时候记得要给c(i,0)赋值1,然后直接公式遍历就好了      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值