曾任职于阿里巴巴,现就职于美图,专业搬砖100年~
暂时未有相关通用技术能力~
阿里云技能认证
详细说明最有用的两个 unsigned long long hash; // hash使用unsigned long long,超过了unsigned long long就相当于取模 //常用1 1 SDBMHash int SDBMHash(...
Hash函数在多个领域均有应用,而在数字签名和数据库实现时又用的最多,比如基于hash的索引,是最好的单值查找索引; 同时,在当前数据爆炸的场景下,执行相似item的查找时,在内存受限时,均可以采取LSH(local sensitive hash)进行分段处理。
点击打开链接uva 652 点击打开链接hdu 1043 点击打开链接zoj 1217 八数码解法2 解题整体思路 ...
对 32 位和 64 位编译器, Microsoft Visual C++ 识别在下表中显示的类型。 注意以下类型还具有无符号形式: int (unsigned int) __int8 (unsigned __int8)...
点击打开链接 题目所属: 隐式图的搜索 题目意思: 有三个容器大小为 a b c 刚开始 a b都是空的 c是满的,现在给定一个d 大小的水量 ,要求我么找到最小的倒水总量使得有一个容器的水量为 d,如果找不到那么就用d'代替d(d' < d)直到能够找到有一个容器的水量为 d为止,最后输出 最小的倒水总量和 d' 解题思路: 倒水条件:假设是a倒入b中,那么必须要有a被倒空或 b 被倒满。
点击打开链接 题目所属: 隐式图的搜索 题目意思: 给定一个5 x 5 的棋盘,棋盘上面有12个黑色的棋子和12个白色的棋子和一个空格, 最开始的这些棋子的位置是不定的, 要求我们找到最小的步数去把这个棋盘转化为最后的那个样子,最后输出。
点击打开链接 题目意思: 给定一个正数 n ,要求找到一个最短序列满足 一下4个条件 1 a0 = 1 2 am = n 3 a0 < a1 < a2 < .
点击打开链接 题目意思: 有16种甜品,现在要做一个批萨,有很多人,每个人喜欢的甜品各不相同,要求我们找到一个方案使得至少让每个人都能够满足一个要求,最后输出这个方案。
点击打开链接 题目意思: 在早期人工智慧的領域中常常會用到機器人,在這個問題中有一支機器手臂接受指令來搬動積木,而你的任務就是輸出最後積木的情形。
点击打开链接 题目意思: 给定一个多叉树的图,要求把图转化为一颗树,最后输出相应的内容。 解题思路: 1 建树 + 前序遍历输出 。这题的输入就是一个很麻烦的事了,我是采用一个二维的char数组来存储读入的图,但是建树的过程我花了一天的时间一直没有成功,不懂为什么(本人比较菜逼) 2 递归输出 。
点击打开链接 题目意思: 给定52张的扑克牌,现在要求对扑克牌进行整理,对于每一张扑克牌,如果左边的第三张存在那么就去判断这一张是否和第三张满足花色或卡片值相同,如果满足则把这一张移动到左边的第三张,否则去判断左边的第一张是否和这一张满足条件;如果左边的第三张不存在那么只要去判断左边的第一张即可。
点击打开链接 题目意思: 这一题题目真心不好看懂,所以呢,我就大概描述一下,题目是说有一个娃娃大小为k可以拆成 -k 和 k ,然后娃娃里面可以嵌套物品,但是规定内层娃娃的大小是不能超过 外层的大小的, 现在给定一个娃娃的尺寸大小序列,左边的是负数,问我们这个序列是不是一个物品所拆开的,相应输出题目所要求的内容。
点击打开链接 题目意思: 有一个城市发生了火灾,现在给定一个目标节点,然后给定一序列节点间的关系,然后每一次都从节点1开始,问我们从节点1到目标节点共有几条路径,并且最后打印出这些路径。
点击打开链接 (这个链接到BNUOJ上面是一样的) 题目意思: 给定m个圆的半径,现在要求找到一个矩形使得每一个球都以地面相切,要求输出最小的矩阵的长度 解题思路: 最小的圆排列问题,对于这样的一个图形我么是转化为坐标来计算,那么我们需要做的三个步骤就是 1 递归去放入每一个圆 2 求出每一个圆的圆心的横坐标 3计算最小的长度 。
点击打开链接 题目意思: 有一辆车从A城市开往B城市,途中有m个站,车上最多的载客人数为n人,每一个站的价格就是终点和起点的差值,现在有k分订单,要求找到这辆车的最大利润 解题思路: 这一题如果我们去搜索站点,那么情况将会非常糟糕,但是如果我么去搜索订单,那么对于每一个订单而言就是取和不取,那么我们就可以知道这个解空间树的每一层就是一个订单,那么我们只要对这个订单编号,然后搜索订单即可。
点击打开链接 题目意思: 给定n个节点,节点的编号为1-n,在给定m个节点链接的信息,现在要求对节点图色,只有两种颜色可以黑色和白色并且相邻的节点不能同时为黑色但是可以为白色,要求黑色节点最多的个数,以及一组节点的编号 解题思路: 对于节点而言,每一个节点就是两种情况,白色或黑色,那么我们知道这一个解空间树的每一层就是一个节点,那么我们只要去搜索这个解空间就可以了,这一题的数据虽然n到达100,但是真正的数据没那么大,不会超时。
点击打开链接 题目意思:给定5个数,还有三种运算符 * + - ,问我们是否能够由这些数和运算符最后的值为23。 解题思路:我们知道5个数的全排列为5!种,那么我们只要去枚举这个全排列中每一个排列进行搜索,是否有23点出现有的话标记ans为1,直接退出。
点击打开链接 题目意思:给定n个节点,(n> c) { if (c == '#') break; memset(mark, 0, sizeof (mark)); mem...
点击打开链接 题目意思:给定8 x 8的一个方格,对于该方格来说每一行上面只能取一个数,然后同行同列同对角线上都是不满足,求出所能得到的最大值 解题思路:8皇后的变形问题,变为求解所有方案数中的最大的和。
点击打开链接 题目意思:给定一个无序的序列,要求找到一个交换次数最少的方案使得序列为有序列,然后再找到以该最少次数为方案的总数是多少,输出方案数 解题思路:根据冒泡排序的方法,我们将可以得到最少的交换次数,然后问我们在这个次数下的交换方式有几种。
点击打开链接 题目意思:给定一个最大为4x4的棋盘,棋盘上面可以放着车还有代表墙的'X',要求对于两个车是不能够连成一条直线的,就是中间有'X'或者是两个的连线为折线 解题思路:1 暴力枚举解空间,求出解空间的最大的值 2 回溯法,通过试探每一点的放与不放,还有判断是否能够满足条件求出最后的最大值 代码1(暴力枚举): //暴力枚举2^16种解 //我们知道对于这个搜索的解空间树的解集最多有2的16次方种,那么复杂度就比较小,我么可以去枚举每一个解,然后找到其中的一个最优解。
点击打开链接 代码: //只要对输入的数据排序,然后查找即可(可用二分,更快) #include #include #include #include #include #include #include #inclu...
点击打开链接 题目意思:给定n个点,求出点之间的最小的距离之和 解题思路:1 利用单源最短路算法 2 枚举点构成序列的全排列,求出所有排列的中的最小,并且记录下对应点的位置 代码: //要求单源最短路径,对于这一题我们知...
点击打开链接 题目意思:给定n个节点,编号为0--n-1,在给定m条边,要求一条最长的路径 解题思路 回溯搜索每一点的最长的路径 代码: //求解最长的路径长度,给个的是一个无向的图,那么我们可以用回溯法去做,只要去试探每一个点的最长的路径,然后得到最大的即可。
解题思路: 对于全排列的问题,STL,提供了一个强大的函数, bool next_permutation(iterator.begin() , iterator.end()); 对于当前的序列如果不是最后一个序列则返回真,否则返回假。
点击打开链接 题目意思:给定一个半径为100的蛋糕,蛋糕上面有许多的樱桃,现在要求一次性平均分蛋糕,并且对应的樱桃的数量要相等。要求这个均分的直线AX+BY = 0的A 和 B的一个解 解题思路:题目规定半径的值,还有A B 的范围,我们知道一条直线能够将点平均分成两半 ,点不会落在直线上,那么我们知道对于点带入直线如果值大于0则点在直线上方,反之在下方。
1//整数的快速幂 m^n % k 的快速幂: long long quickpow(long long m , long long n , long long k){ long long ans = 1; ...
点击打开hdu 1575 思路: 矩阵快速幂 分析: 1 题目给定一个n*n的矩阵要求矩阵的k次幂之后的矩阵的对角线的和 2 矩阵快速幂的裸题 代码; /************************************...
点击打开链接 思路:矩阵快速幂 分析: 1 裸题 代码: /************************************************ * By: chenguolin ...
点击打开链接 题目意思:给定n个点,判断由某一点出发最后能否回到原点 解题思路:比较简单的欧拉回路的应用,根据欧拉回路的性质,所有节点的度数(入度加出度)都是偶数,我么只须要开一个road数组存储每一个节点的度数,最后遍历数组判断是不...
点击打开链接 题目意思:给定n个单词,要求单词的第一个字母和前一个单词的最后字母相同(除了第一个),判断所有单词是否可以连成一条链。 解题思路:题目很明显是一个有关欧拉路的问题,我们先了解一下有关欧拉道路和欧拉回路的区别。
点击打开链接uva10557 点击打开链接hdu 1317 思路:SPFA+dfs 分析: 1 题目的图是一个有向图,并且可能存在环。第一个点的能量值为100,边的权值利用能量大小,例如2点为-60,如果1->2那么value[1][2] = -60 2 题目明确指出如果是要win的话,那么必须是经过的每条边都要大于0.那么我们只要把那些经过松弛操作后的点大于0的入队即可,小于等于0的点肯定不会出现在最终的路径上。
点击打开链接 题目意思:给定一个字符串表示是一个表达式,要求使用队列代替栈的方法来输出结果。 解题思路:我们知道对于这个表达式,最后一个肯定是大写字母,对于每一个大写字母会跟着两个小写的字母或大写字母,那我们联想到二叉树,我们可以建立一颗二叉...
点击打开链接 题目意思:给定n个节点,还有l条边,每一个节点只有两种颜色可以上,但只能选择一种,并且要求相邻的节点之间不能有相同的颜色,判断给定的数据是否满足,如果满足 #include #include #include ...
点击打开链接 题目意思:给一个三维的地图,然后在地图里面有一个起点S 和终点E ,问是否能够找到一条路径从S到达E。如果能够找到就输出步数,如果不能就输出Trapped!。
点击打开链接 题目意思:给定两个数n , m .n是任务的编号从1~n, m则是有m个关系式.求出一种做该任务的顺序(答案不唯一)。 解题思路:这一题是很简单的拓扑排序,直接利用拓扑排序的模板,然后注意输出就可以了。
点击打开链接 题目意思:给定一个房间,房间四周都是封闭的,但是房间里面会有相通的门,开始里面有个点要求从这个点开始能够填到的地方全部标记为#,包括自己,输出填充后的房间地图 解题思路:简单的floodfill思路,利用dfs就可以做,从起...
点击打开链接 题目意思:给定一个地图,然后里面分布着许多的骰子,如果骰子连在一起就是算1 ,要求给定的地图里面的骰子的点数,并且从小到大输出。
点击打开链接 题目意思:给定一个地图,由'\'和'/'组成,要求里面能够构成的环的个数,以及最大的环的步数。 解题思路:对于这类的题目,我们可以利用小化大的思想,我们利用一个比地图大两倍的数组来存储这个地图(四格思想),对于'/',存为1 '\'存为-1,然后我们就可以像在平面上面一样直接dfs,还有对于一个环,它的各个步数肯定都是不能有和边界接触的,那么我们用一个flag来标记是否是环即可求出。
点击打开链接 题目意思:有一个8x8的棋盘,初始给定两个位置,求出从第一个位置到第二个位置的最短路 解题思路:对于这一类的求最短路我们一般用广搜来做,开个结构体存储坐标,然后用队列存储这个这个结构体的对象,开始把第一个点放入队列,接下...
点击打开链接 题目意思:给你一块区域里面分布着油田,只要有连着就属于同一个油田,求出该区域有几个油田 解题思路:简单的Bfs 或 dfs 可以搞定 ,注意对走过的进行标记用mark数组。
点击打开链接 题目意思:给定两个字符串,字符p对应建立子树,字符e为白色,f为黑色对于不同层黑点f对应不同的值,最上面为1024下来为每个子树256.
点击打开链接 题目意思:给定一串数字,第一个是根节点的值,接下来如果遇到-1 则该点为空,不是-1则创建节点,求最后从左往右每一条竖线的和 分别输出。
点击打开链接 题目意思:给定一序列的数字,每组四个,分别是W1 D1 W2 D2 表示左右节点的重量和长度,如果W1 或W2 为0说明有子节点存在,判断是否满足平衡 解题思路:1 建立二叉树,然后遍历查找 但是这个很麻烦 2 dfs 我们知...
点击打开链接 #include #include #include #include #include #include #include #include #include #include #include us...
点击打开链接 题目意思:给定一个字符串,把字符串里面的数字建成一颗树,数字有可能是负号,所以这一题其实有很多可以学的,比如怎样输入会有多行,还有怎么建立一颗树,等等。
点击打开链接 题目意思:有很多个队,然后每个队都有自己的成员,如果遇到ENQUEUE 就把该元素插入到自己队伍里面,如果没有自己的队伍那么就插入到最后面,遇到DEQUEUE就输出第一个元素,遇到STOP就停止 解题思路:首先题目的数据很大,如果我们暴力肯定会TLE ,我们用list链表,那么我们可以开一个mark[1000000]用来存储是否有这个元素,还有同一队的元素赋值为相同,那么我们再开一个迭代器数组it[1010],用来存储每一组的最后一个元素的地址个,还有初始化迭代器数组为末尾。
题目意思:有N份申请表围城一圈,编号为逆时针编号,有两个人一个从逆时针走k步,另一个人顺时针走m,然后就有两个人所对应的申请书的编号,如果两个人走到同一个编号那么只要删除一个就好,如果不同删除两个,知道元素为空。
点击打开链接 题目意思:给定一序列的矩阵,然后对于每一个表达式求出矩阵的乘法次数 解题思路:我们可以想到利用栈的思想,如果读入的字符不是 ')' 那么我们都把它如栈,如果遇到')', 我们往回找到第一个不是左括号后面的所有矩阵然后相乘,在把结...
点击打开链接 题目意思:有一堆的乌龟,输出一堆乱序的乌龟,然后输入一个正确的顺序,要求找到一种最小步骤的方法使得第一堆变成第二堆,每一次可以把乌龟移到第一个位置,输出该方法步骤.