分类ios
1、小数据范围,须要枚举,求最大或最小值算法
搜索,for循环枚举数组
2、数据较大,也有枚举特征,或等差序列网络
动态规划函数
3、题目比较长,题中有对流程的描述spa
模拟code
4、看起来像数学中的找规律题blog
数论,想不出公式就递推队列
5、给了一个图,找最短路径element
最短路算法
6、给了一个图,判断图的连通性并在连通时求最大或最小花费
生成树
7、在一段区间里修改或求和
线段树、树状数组、模拟
8、最大值最小或是最小值最大或判断一个数成不成立
二分答案
9、素数的判断
枚举到根号a。
10、中位数与最小值
均分纸牌问题。
11、网络流的限流
新建一个汇点,连一条流量为限制流量的边。
12、把一个数的每一位拼成一个整数
for(int i=t1;i>=1;i--) { tot=tot*10+ori[i]; }
十3、带权二分图最大匹配
源点到左边点流量为1,费用为0;左边点到能匹配的右边点流量为1,费用为边权;左边点到汇点流量为1,费用为0。
十4、平面图染色
颜色=2时,若是n是基数则方案数为0,n是偶数则方案数为2。
十5、询问一些序列中最多重复的个数
作一个统计序列,在序列的左端点+1,右端点-1,而后作这个序列的前缀和。
十6、bitset神器
这玩意所占空间是相同元素个数的bool数组的1/8,运行时间是1/32(32位系统)或1/64(64位系统)。
十7、cctype库函数
十8、堆的复杂度计算
log(堆的大小),与输入数据的规模无关。
十9、nth_element(first,kth,last)函数
使第k大元素处于第k位置,而且比这个元素小的元素都排在这个元素以前,比这个元素大的元素都排在这个元素以后,但不能保证他们是有序的。
二10、long double类型函数
在通常的cmath函数后面加一个l,不然即便传参是long double,计算的结果也是double。输入/出long double最靠谱的方式是用double类型输入/出而后转成 long double。
二11、位运算^
若是a^b==2,那么a^2==b。
二12、数对个数
可重:n(n-1)。不可重:n(n-1)/2。
二十3、优先队列的comp
大小于号方向与元素大小相反
#include <queue> #include <iostream> using namespace std; struct cmp { bool operator()(int i, int j) {return i < j;} }; int main() { priority_queue<int, vector<int>, cmp> q; for (int i = 0; i < 5; i++) {q.push(i);} for (int i = 0; i < 5; i++) {cout << q.top() << ' '; q.pop();} return 0; }
暂时这些,想到在更。