算法
qxAi
热爱算法但不是技术宅男
展开
-
BestCoder Round #18题解
第一次打bestcoder,发挥的不是一般烂,下了个原创 2014-11-17 09:15:35 · 709 阅读 · 0 评论 -
【BZOJ3669】NOI2014-魔法森林(神奇的解法)
在一个魔法森林中,有n个节点(n<=50000),m条边(m<=100000),每个节点有两个值ai,bi,1<=ai,bi<=50000。有一个精灵要从节点1到达节点n,一个节点i可以经过的要求是它携带的两个值A,B可满足A>=ai,B>=bi,求min(A+B)。 本题目的标准解法是LCT(link-cut-tree),这里讨论一种基于搜索算法的解决方法,其编程复杂性和理解难度略优于LC原创 2015-04-08 13:16:47 · 2504 阅读 · 1 评论 -
动态规划之插头DP入门
基于联通性的状态压缩动态规划是一类很典型的状态压缩动态规划问题,因为其压缩的本质并不像是普通的状态压缩动态规划那样用0或者1来表示未使用、使用两种状态,而是使用数字来表示类似插头的状态,因此,它又被称作插头DP。插头DP本质上是一类状态压缩DP,因此,依然避免不了其指数级别的算法复杂度,即便如此,它依然要比普通的搜索算法快很多。【例】Postal Vans(USACO training原创 2015-03-20 11:36:19 · 8830 阅读 · 3 评论 -
每日一题之最长上升子序列
题目:有一个长为n的数列a0,a1,...,an-1。请求出这个序列中最长的上升子序列的长度。上升子序列指的是对于仍以的 i输入样例:5 4 2 3 1 5输出样例:3 (a1,a2,a4构成子序列2,3,5最长)思路1:这个问题是被称为最长子序列。可以通过DP的方法来求解。定义dp[i]为以ai为末尾的最长上升子序列的长度。以ai为结尾的上升子序列有两种情原创 2015-01-24 16:14:14 · 1910 阅读 · 0 评论 -
每日一题之找出水洼个数
题目描述:有一个大小为M*N的园子,雨后起了积水。八连通的积水被认为是连接在一起的。请求出园子里总共有多少水洼.要求,分别输入M,N,以及园子的积水情况。M,N000070000输入样例:10 1270000000077007770000077700007700077000000000077000000000070000700000070007070原创 2015-01-22 10:42:11 · 1947 阅读 · 1 评论 -
每日一题之排序算法专题
排序算法专题输入n个数字,对这n个数字按从小到大的顺序排序输出。自己设计场景去考虑使用什么算法合适,可以从时间,空间,数字范围,n的范围等角度去写排序的算法。常用的排序算法简介请移步http://blog.csdn.net/hguisu/article/details/7776068介绍的非常详细,非常赞的一篇博客在这里只浅谈一下各种排序算法的用途:先解原创 2015-01-19 15:07:47 · 868 阅读 · 0 评论 -
动态规划之状态压缩dp入门
状态压缩动态规划(简称状压dp)是另一类非常典型的动态规划,通常使用在NP问题的小规模求解中,虽然是指数级别的复杂度,但速度比搜索快,其思想非常值得借鉴。为了更好的理解状压dp,首先介绍位运算相关的知识。1.’&’符号,x&y,会将两个十进制数在二进制下进行与运算,然后返回其十进制下的值。例如3(11)&2(10)=2(10)。2.’|’符号,x|y,会将两个十进制数在二进制下进行或运原创 2015-02-04 15:54:42 · 53088 阅读 · 22 评论 -
每日一题之找出两个单独出现的数字
题目:读入2n个数字,其中,除了有两个数字是单独出现外,剩下任何一个数字出现次数都是偶数个,请写出算法找出这两个数字并输出读入样例:81 3 4 5 9 1 4 3输出:5 9思路1:看到这道题目,第一反应就是for循环枚举一遍,然后统计每个数字出现的次数,最后输出出现次数是奇数次的:map num;for (int i=1;i<=n;i++){ cin>原创 2015-01-16 20:11:21 · 1187 阅读 · 0 评论 -
动态规划经典例题之传纸条
传纸条(NOIP2008,Vijos-1493)题目描述:小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n)。原创 2015-01-30 09:38:36 · 16694 阅读 · 6 评论 -
浅显易懂的动态规划入门
为了引出动态规划的基本思想,请看下面的例子:题目描述:斐波那契数列是数学中常见的数列,也叫兔子数列,它满足:a[1]=1,a[2]=1,a[n]=a[n-1]+a[n-2](n>2),输入n,输出a[n] mod 10000007的值。(n输入样例:345输出样例:235【算法分析】看到题目以后,我们可以很轻松的写出两个版本的代码,一个是递推原创 2015-01-27 15:18:27 · 1757 阅读 · 1 评论 -
【NOI2013】矩阵游戏
【题目描述】 婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储)。她生成的这个矩阵满足一个神奇的性质:若用F[i][j]来表示矩阵中第i行第j列的元素,则F[i][j]满足下面的递推式: F[1][1]=1 F[i,j]=a*F[i][j-1]+b (j!=1) F[i,1]=c*F[i-1][m]+d (i!=1) 递推式中原创 2016-07-18 11:51:11 · 892 阅读 · 0 评论