随笔分类 - 算法学习√
摘要:double a= pow(double x, double y);//返回x的y次方。 double a= sqrt(double x);//返回x的平方根。 double a=ceil(double x);//返回大于或等于x的最小整数值。 double a=fabs(double x);//返
阅读全文
摘要:字符串读入直接读字符数组 char s[1004];scanf("%s",s); 但是要用strlen(s)来算长度 复杂度O(n) e.g.a串是不是b的子串 //从a第0位开始枚举 //如果a的第0位=b的第i位 //就从b的第i位开始枚举检查 #include<cstdio> #include
阅读全文
摘要:for(int i=1;i<=scc;i++) if(!ru[i]) q.push(i); while(!q.empty()){ int x=q.front();q.pop(); for(int i=hd[x];i;i=ed[i].next){ hav[ed[i].to] += hav[x]; --
阅读全文
摘要:1684: 金币 题目描述 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天) ,每天收到两枚金币;之后三天(第四、五、六天) ,每天收到三枚金币;之后四天(第七、八、九、十天) ,每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 N 天每天收
阅读全文
摘要:1617: 阿克曼函数(递归) 题目描述 阿克曼( Ackmann) 函数 A(x, y) 中, x, y 定义域是非负整数, 函数值定义为: 阿克曼( Ackmann) 函数 A(x, y) 中, x, y 定义域是非负整数, 函数值定义为: 输入 输入两个数,表示m和n。 两个数均不超过10。
阅读全文
摘要:n的全排列 题目描述 输入一个整数n,输出的n的全排列。 输入一个整数n,输出的n的全排列。 输入 输出 样例输入 样例输出 #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> using namespa
阅读全文
摘要:#include<iostream> #include<cstdio> using namespace std; int str_len(char *str); int main() { char *str = new char[100]; //定义一个指针str,指向一个长度100的char数组
阅读全文
摘要://摘自洛谷: //0x3f3f3f3f还能给我们带来一个意想不到的额外好处:如果我们想要将某个数组清零,我们通常会使用memset(a,0,sizeof(a))这样的代码来实现(方便而高效) //但是当我们想将某个数组全部赋值为无穷大时(例如解决图论问题时邻接矩阵的初始化),就不能使用memset
阅读全文
摘要:有负环也资磁√ #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #define inf 233333333333 using namespace std; int cost[1000][1000];/
阅读全文
摘要:QAQ不资磁负环的最短路算法 模板酱 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #define inf 233333333333 using namespace std; struct edge
阅读全文
摘要:模板题 https://www.luogu.org/problem/show?pid=3366 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<qu
阅读全文
摘要:RMQ(Range Minimum/Maximum Query),即区间最值查询 查询很多的时候求[l,r]的最大值可以弄一个数组f[i,j]表示i~j的最大值 //这个是线段树 rmq是f[i,j]表示 i 到 i+2^j-1 这个区间的最大值 /*给例子好理解 比如f[i,0] = a[i] 然
阅读全文
摘要:struct data { int xuhao,w; }node[maxn]; bool cmp(data a,data b) { return a.dis < b.dis; }//°´dis´ÓСµ½´óÅÅÐò sort(node+1,node+1+n,cmp); 结构体排序 struct d
阅读全文
摘要://spfa算的是从x到其他所有点的最短路 QAQ是一种求单源最短路的算法,判断负环非常资磁 用到的变量: n:点的个数从1到n标号 /* queue<int>q :一个队列,用stl或者手打,priority_queue也很资磁啊 head:队列头 tail:队列尾 bool vis[Maxm]:
阅读全文
摘要:首先最简单的存图方式:邻接矩阵 mp[i][j]表示从i->j有一条边权为mp[i][j]的边//如果是无限大的话就是算作没有边 e.g.http://218.5.5.242:9018/JudgeOnline/problem.php?id=1144 这里mp[xx][yy]=(xx和yy的距离)//
阅读全文
摘要:假设s1里找s2,然后s2进去匹配假设在第三位失配那么说明前两位是匹配成功的 如果这时候将s2后移一位相当于将s2的第一位和s2的第二位比较,如果我们已知s1(1)≠s1(2)那么就可以直接后移两位 而这时候就是s1(1)和s1(3)比较,如果s1.1=s1.3那就可以直接后移3位了 我们的目标就变
阅读全文
摘要:memset只能赋值成0或者-1,127是无限大(求最好127/3,不然加一下就爆int了) define几乎就是高级替换,写一些简单的函数还是比较资磁的 譬如#define sigma(i,j) (s[j]-s[(i)-1])
阅读全文
摘要:例题: http://www.cnblogs.com/gc812/p/5792181.html http://www.cnblogs.com/gc812/p/5792217.html
阅读全文
摘要:01背包 有N件物品和一个容量为V的背包。第i件物品的费用(即体积,下同)是w[i],价值是c[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路: 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前
阅读全文
摘要:区间DP是一类在区间上进行dp的最优问题,一般是根据问题设出一个表示状态的dp,可以是二维的也可以是三维的,一般情况下为二维。 然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左右两个区间合并到整个区间,或者说局部最优解合并为全局最优解,然后得解。 区间dp就是f[i][j]表示i
阅读全文

浙公网安备 33010602011771号