数的表示:任意进制转换(大数 )
n!的高精度算法 n!末尾0的个数
大数的法则 大数相加 大数相减 大数相除
快速幂
日期问题:
某天后n天的日期
任意一天是星期天
字符串:
回文串:
贪心:(背包相关问题:装载/背包/乘船)
(选择不想交区间:最早结束最早开始的:和装载问题性质相同)
(区间选点:最早结束最晚开始:CFR38 C)
(区间覆盖问题:最早开始:需要预处理区间消除多余信息对决策的干扰,就是左区间的意义变化)
枚举 : 排列组合 子集生成(3) 枚举技巧
组合数学:**组合重复,组合枚举,组合计数。
递推法:斐波那契
回溯法:(去年的分割线:考建模-表格点状态转移) (瓷砖安排:考建模-格子安放策略)
TSP,哈密顿,八皇后
分治法:
快速排序、归并排序、棋盘覆盖
减治法:
二分法:(去年的巧克力问题:最大化边长) (HRbust1039:最小化最长修道时间)
堆排序 假币问题
动态规划:
背包规划:完全背包: (去年的包子问题:考扩展欧)
STL:(map:count() clear()两个函数) (vector)
(char[]数组的切割 strtok(a,"-"))
char *p=strtok(s,"-"); for(int i=0;i<3;i++){ date[i]=atoi(p); //printf("%d",date[i]=atoi(p)); p=strtok(NULL,"-"); }
(string :(char[]转string:赋值操作就行) (string转char[] :strcpy(a,b.c_str()) ))()
(stack :)
(priority_queue:在结构体里面添上friend bool operator<(node a,node b))
初级数据结构:
栈:(表达式)
中级数据结构:
平衡二叉树:
线段树/树状数组:
并查集:
图论:
最短路(floyd+dij+spfa)
连通性
bfs
数论:
同余/整除:
**欧几里得:
素数筛:
组合游戏(博弈):
取石子游戏 (n%(m+1)==0)false
b-a>a是必胜态
- if(b%a==0)
- break;
- if(b-a>a)
- break;