Algorithm
Usher_Ou
这个作者很懒,什么都没留下…
展开
-
ACM常用技巧与知识
ACM常用技巧与知识 1.输入外挂 inline void scan(long long &k)//看情况改类型 { char c; while((c=getchar())&&(c>’9’||c<’0’));k=c-‘0’; while((c=getchar())&&(c<=’9’&&c>=’0’))k=k*10+c-‘0’; } 用于有大量数字的输入; 2.Cin.push_ba原创 2017-03-02 16:59:06 · 1490 阅读 · 0 评论 -
ACM在线模版
原文链接:http://blog.csdn.net/f_zyj/article/details/51594851#commentsIndex分类细则说起分类准则,我也是很头疼,毕竟对于很多算法,他并不是单调的,而是多方面的都挂得上钩。所以,从始至终,分类准则一直都是我很纠结的问题。经过思量,首先分出比较主流的几类:Number、Graph、Network、Structure、G转载 2017-02-26 10:41:57 · 2869 阅读 · 0 评论 -
矩阵快速幂模板
int mod;const int NUM;//定义矩阵能表示的最大维数int N;//N表示矩阵的维数,以下的矩阵加法、乘法、快速幂都是按N维矩阵运算的struct Mat{//矩阵的类 LL a[NUM][NUM]; void init()//将其初始化为单位矩阵 { memset(a,0,sizeof(a)); for(int i=原创 2017-04-09 15:52:44 · 308 阅读 · 0 评论 -
容斥原理详解
翻译:vici@cust对容斥原理的描述容斥原理是一种重要的组合数学方法,可以让你求解任意大小的集合,或者计算复合事件的概率。描述 容斥原理可以描述如下: 要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,然后减去所有两个集合相交的部分,再加回所有三个集合相交的部分,再减去所有四个集合相交的部分,依此类推,一直计算到所有集合转载 2017-03-31 17:27:39 · 13593 阅读 · 0 评论 -
背包九讲
P01:01背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[转载 2017-03-27 21:17:29 · 349 阅读 · 0 评论 -
DFS&&BFS模板
DFS模板#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;const int maxn=100;bool vst[maxn][maxn]; // 访问标记int map[maxn][maxn]; // 坐标范围int dir[4][2]= {0,1,0,-1,1,0,-1,0}; // 方向向原创 2017-04-02 17:24:01 · 610 阅读 · 0 评论