ACM算法
spring_3_shine
非专业励志狗,2分59秒热度男,间歇性幻想家
展开
-
最大公约数(《编程之美》)
三种解 1.辗转相除法(缺点:大整数的 除法/取模 运算开销大)int gcd(int x,int y){ return y==0?x:gcd(y,x%y); } 2.相减法(迭代多)int gcd2(int x,int y){ if(x<y) return gcd2(y,x); return y==0?x:gcd2(x-y,y);翻译 2016-09-13 16:39:35 · 267 阅读 · 0 评论 -
LeetCode 766. 托普利茨矩阵
题目:如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。给定一个 M x N 的矩阵,当且仅当它是托普利茨矩阵时返回 True。示例 1:输入: matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]输出: True解释:123451239512在上面这个矩阵中, 对角线分别是 "[9]", "[5, 5]...原创 2018-04-19 16:03:11 · 932 阅读 · 0 评论 -
两行代码的并查集
初始化+find+unitint home[MAXN];void init(){ for(int i=0;i<MAXN;i++){ home[i]=i; }}int find(int x){ return x==home[x]?x:(home[x]=find(home[x]));}void unit(int x,int y){ home[find原创 2017-04-25 20:57:51 · 391 阅读 · 0 评论 -
矩阵乘法及应用整理
本文参考: http://www.matrix67.com/blog/archives/276(主要!) IOI国家集训队2008 俞华程《矩阵乘法在信息学中的应用》(主要!)因为matrix67大牛的文章出了一些偏差,文章剩余部分在这篇博客里可以找到 https://www.cnblogs.com/frog112111/tag/%E7%9F%A9%E9%98%B5%E7%BB%8F%E5%8原创 2017-04-10 22:10:57 · 2122 阅读 · 0 评论 -
HDU 3549 最大流纯模板
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3549 题意:T组样例,做点1–>n的最大流 规模: (2 <= N <= 15, 0 <= M <= 1000) (1 <= X, Y <= N, 1 <= C <= 1000) 类型:最大流基础,纯模板 分析:第一次做网络流,在代码里加了许多注释,边学边敲 时间复杂度&&原创 2017-03-22 20:41:55 · 304 阅读 · 0 评论 -
POJ 3169 图论 差分约束系统
题目链接:http://poj.org/problem?id=3169 题意: 一个牛舍里有按序号排列的N头牛(可以多头牛在统一位置),有一些牛的关系比较好,他们希望彼此不超过一定的距离。当然也有些牛关系不好,他们希望彼此超过一定的距离。 有ML对牛的关系比较好,并给出每对牛的所不超过的距离D;同样,有MD对牛的关系不好,并给出每对牛的所超过的距离D。 问是否有满足这样的安排方案满足所有牛的原创 2017-02-22 22:28:47 · 242 阅读 · 0 评论 -
POJ 3255 图论基础 次短路
题目链接:http://poj.org/problem?id=3255 题意: 某街道共有R条道路、N个路口。道路可以双向通行。问1号路口到N号路口的次短路长度是多少?同一条边可以经过多次。 规模: 1<=N<=5000 1<=R<=100000类型: 最短路变形 分析: 次短路[v]=最短路[u]+边[u,v] 或者 次短路[v]=次短路[u]+边[u,v] 不同于普通最短路原创 2017-02-22 22:02:44 · 514 阅读 · 0 评论 -
POJ 2689 区间筛选质数
题目链接:http://poj.org/problem?id=2689 题意: 给定区间 [L,U] 中,求相邻两个质数的 最大(小)差值 所对应的质数 有多组 [L,U]。 规模(1<=L< U<=2,147,483,647,区间长度<1,000,000. ) 类型: 经典的区间筛选质数 分析: 定理:所有的合数都可以拆分为n个质数的乘积 从L,U的大小(2的32次)明白:最大原创 2017-01-17 23:47:31 · 352 阅读 · 0 评论 -
HDU 3790--最短路问题(Dijkstra)
Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。Input 输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。 (1原创 2017-01-15 16:36:46 · 253 阅读 · 0 评论 -
HDOJ-1885 Key Task 迷宫问题
BFS+状态压缩 跟1429很想,重敲了一遍,加深了理解吧 有些问题没理清造成了bug 1.门next.state&t 钥匙next.state|=t 有无赋值很重要,不能弄混 2.最后的else if 不光是’通道’的情况,还有出口的情况,不然出口无法入队,就无法访问,ans恒为-1#include<stdio.h>#include<string.h>#include<stdli原创 2016-09-21 20:45:35 · 316 阅读 · 0 评论 -
位运算
1. 位操作只能用于整形数据,对float和double类型进行位操作会被编译器报错。2. 对于移位操作,在微软的VC6.0和VS2008编译器都是采取算术称位即算术移位操作,算术移位是相对于逻辑移位,它们在左移操作中都一样,低位补0即可,但在右移中逻辑移位的高位补0而算术移位的高位是补符号位。如下面代码会输出-4和3。int a = -15, b = 15; printf("%d %d\n转载 2016-09-12 20:28:12 · 250 阅读 · 0 评论 -
(矩阵)快速幂
(以HDU 1757 为例) 今天完成了(矩阵)快速幂的初步学习,主要有几点问题需要注意。 1.快速幂主要知道其+,*,-,^,()……都能拆开求余就好(除法不能)2.此类题大都数据大,定义应为long long型,并且可能是scanf3.矩阵快速幂 核心是构造数组 HDU1757算法思路如下图(盗) 4.对于不同的题,需要一些小的修改,主要是经过数学推导,是矩阵相乘后能够得到f(x)原创 2016-09-09 22:27:31 · 337 阅读 · 0 评论 -
LeetCode 695. 岛屿的最大面积(dfs)
题目:给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0],...原创 2018-04-20 12:57:50 · 624 阅读 · 0 评论