高精度运算 高精度加法: int main() { scanf("%s%s",&a1,&b1); if(a1[0] == '0' && b1[0] == '0') { cout << "0"; return 0; } for(int i = 0;i < strlen(a1);++i) a[strlen(a1) - i - 1] = a1[i] - '0'; for(i…
高精度运算 高精度加法: int main() { scanf("%s%s",&a1,&b1); if(a1[0] == '0' && b1[0] == '0') { cout << "0"; return 0; } for(int i = 0;i < strlen(a1);++i) a[strlen(a1) - i - 1] = a1[i] - '0'; for(i…
洛谷:P3386 题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每行两个正整数u,v,表示u,v有一条连边 输出格式: 共一行,二分图最大匹配 输入输出样例 输入样例#1: 1 1 1 1 1 输出样例#1: 1 邻接矩阵(老码风) #include <cstdio> #include <iostream> #include <algorithm> #include &…
数据结构 树状数组,堆 线段树 单点,区间 动态开结点 并查集 加了路径压缩之后不能随便撤销 使用启发式合并复杂度是 O(n log n),按秩合并是 O(nα(n))。 平衡树 treap 比较好写 splay 比较难写, noip 也不会考这么高级的东西 只能说 (开了 O2 的)set 秒杀一切 dfs 序与树链剖分 非传统方法 点事件 分块 cdq 分治 树状数组 具体思想就是要维护一个序列 a 的前缀和,我们可以维护一个辅助序列 s,使得 si = ∑j2(i-lowbit(i);i] aj,然后我们发…
搜索问题 搜索是玄学,最稳定的应用是写暴力 or 骗分。 一个搜索问题的基本模型有以下几个要素: 状态:表示当前搜索到的局面。一般用x,y,z表示。一开始我们处于初始状态。 代价:表示对当前状态好坏的一个衡量。一般用f(x),g(x)表示,指代状态代价。 扩展(转移):表示从当前状态出发,我们再进行一步搜索的过程。在扩展过程结束以后,我们可能会转移到若干个新的状态。一步转移也会带来代价,称为转移代价。 搜索问题可以分为两类:可行性搜索与最优性搜索。 在可行性搜索问题当中,目标是搜索到某些给定状态,问是否能够从初始状…