ACM
丶一简丶
每个人都是通过自己的努力,去决定自己生活的样子。明因识果,戒慎于初。
展开
-
一道全排列算法题目
题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 牛客网题目链接解题思路:用set保存中间结果集,确保唯一性,先举出一个元素的全排列,再往里面逐个添加元素,每次增加一个元素,该元素在之前结果集的每一个排列,假设该排列的字符串长度为k, 那么该元素有k+1个位置可...原创 2018-04-06 22:27:37 · 694 阅读 · 0 评论 -
优先队列实现原理分析
来源:ziwenxie, www.ziwenxie.site/2017/03/30/algorithm-priority-queue/原文优先队列是在实际工程中被广泛应用的一种数据结构,不管是在操作系统的进程调度中,还是在相关的图算法比如Prim算法和Dijkstra算法中,我们都可以看到优先队列的身影,本文我们就来分析一下优先队列的实现原理。优先队列以操作系统的进程调度为例,比如我们在使用手机的转载 2017-07-03 14:16:02 · 1422 阅读 · 0 评论 -
统计数组中差最小(或最大)的组合可能个数
腾讯2017暑期实习生编程题第三题小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?输入例子: 6 45 12 45 32 5 6输出例子: 1 2思路:先排序,分一般情况和特殊情况,特殊情况数组所有元素相同,差最小最大的组合个数都是C(n,2)否则,差最大的组合个数 = 最小值个数MinNum * 最大值个数MaxNum接下来求 ,差最小(minVal原创 2017-04-02 21:41:18 · 1424 阅读 · 0 评论 -
给定字符串,删除最少的字符,使剩下的字符串成为回文串
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。经典编程题目啦~~设原字符串s 原字符串反转的字符串t,回文串最长长度问题转为求LCS(s,t)的长度,画个二维数组就能明白原理,dp[i][j]表示 s 前 i 个字符与 t 前 j 个的公共最长子序列(LCS)长度so easy~腾讯2017暑期实习生编程题#inclu原创 2017-04-02 21:18:58 · 2649 阅读 · 0 评论 -
不申请额外空间调整字符串大小写顺序,大写字母依次放到后面
一道很经典的字符串算法题: 把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。 例如 AkleBiCeilD, 调整后应该是 kleieilABCD第一次做的时候写的是类似冒泡的两两交换,时间复杂度是O(n*n),明显当n达到万级的时候就会TLE,是很笨的方法。而且声明了 char t;#include <iostream>#include <cs原创 2017-04-02 20:59:57 · 1461 阅读 · 0 评论 -
深度优先搜索DFS
思路是尽可能地访问相邻顶点。设仍存在未搜索邻接边的顶点中最后一个被发现的顶点为v, 那么深度优先搜索就是对顶点v的邻接边递归地进行搜索。当v的边全部搜索完毕后,程序延发现v时所经过的边回归,继续搜索前一顶点。搜索一直持续到发现当前起点可到达的所有顶点为止。如果仍有顶点未被发现,则选择其中编号最小的一个作为新起点继续搜索。//用栈实现的深度优先搜索,OJ: AOJ,题号ALDS1_11_B#incl原创 2017-03-23 15:19:13 · 331 阅读 · 0 评论 -
范围搜索 (Range Query)
范围搜索Author: Subhash Suri译者:Koala++ / 屈伟引 前一阵把搜索引擎的RangeQuery的逻辑重新写了一遍,我写的时候就感觉很不对劲,我们的搜索引擎采用的是一种非常怪异的实现,至少我没在别的搜索引擎里见过,或是在资料中看到过。我要解决的是二维坐标查询,比如你想知道你周围五公里内的医院在什么地方,蛮力解决方法就是把所有医院坐标得到,把x坐标循环过滤一遍,再把转载 2017-03-23 11:53:51 · 5689 阅读 · 1 评论 -
矩阵链乘法
对于给定的n个矩阵形成的矩阵链M1,M2,M3,…,Mn,求计算乘积M1M2M3…Mn时进行最少次标量相乘的运算顺序,这类问题就称为矩阵链乘法问题(Matrix Chain Multiplication Problem)//O(n的三次方)#include <iostream>#include <algorithm>using namespace std;const int maxn = 1原创 2017-03-23 11:45:45 · 475 阅读 · 0 评论 -
快速查询区间最值——RMQ算法(线段树实现代码)
要求找出区间内的最大最小值的差。#include<stdio.h>#include<string.h>#include<math.h>#define lson l,m,p<<1#define rson m+1,r,p<<1|1#define Max(a,b) (a<b?b:a)#define Min(a,b) (a<b?a:b)#define INF 999999999/*线段树in原创 2017-03-23 11:35:19 · 500 阅读 · 0 评论 -
快速查询区间最值——RMQ算法(ST实现)
概述 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。这两个问题是在实际应用中经常遇到的问题,下面介绍一下解决这两种问题的比较高效的算法。当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂原创 2017-03-23 11:32:53 · 951 阅读 · 0 评论 -
Codeforces Round #378 (Div. 2)
http://codeforces.com/contest/733A. Grasshopper And the String 其实就是统计最长连续的非元音字符长度,+1输出#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const int maxn原创 2016-11-06 14:06:30 · 214 阅读 · 0 评论 -
2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Prefer
2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred) http://codeforces.com/contest/730G. Car Repair Shop 水题,题意是安排日程,因为最迟不得超过客户要求开始的日子,所以是很简单的贪心,检查该原创 2016-11-06 12:00:22 · 581 阅读 · 0 评论 -
海量数据处理 - (top K问题)
原文地址 前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些。 先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大转载 2017-04-03 21:41:47 · 649 阅读 · 0 评论