- 博客(28)
- 资源 (2)
- 收藏
- 关注
原创 Leetcode 98. Validate Binary Search Tree C++及javascript解答,不同语言不同玩法
题意:给定一棵二叉树,写程序判断这颗二叉树是否为合法的二分查找树(对于节点root,其所有左子树中节点都满足 node.val root.val)转载请注明出处:http://blog.csdn.net/sunny606C++:/** * Definition for a binary tree node. * struct TreeNode { * int val;
2017-03-15 22:03:34 534
原创 半天痛苦换来的教训,做一道DP经典水题----最长公共子序列 POJ 2250
一上午的痛苦换来的教训:作为程序猿,即使面对再熟悉再简单的问题也要时刻保持严密的逻辑。
2013-07-31 11:33:52 1287
原创 趣题 CodeForces 111B题解
从这组输入样例来说明题意吧Sample test(s)input64 03 15 26 218 410000 3output3112222NoteLet's write out the divisors that give answers for the first 5 querie
2013-07-26 10:35:06 1998
原创 那些年我们写过的三重循环----CodeForces 295B Greg and Graph 重温Floyd算法
这个问题让我们再一次想起Floyd算法三重for循环背后的光芒。
2013-07-23 13:10:59 1923 1
原创 树形DP 统计树中长度为K的路径数量 CodeForces 161D Distance in Tree
用DP方法统计一棵N(N<=50,000)个节点的树中长度为K(K<=500)的路径条数
2013-07-23 09:55:00 1787
原创 2012 ACM/ICPC Asia Regional Tianjin Online ——A very hard mathematic problem解题报告
http://acm.hdu.edu.cn/showproblem.php?pid=4282裸搜索题,因为2^31开三次方后大概是1000多,所以搜索的规模很小,枚举Z枚举Y看X是否满足条件即可,判断X是否满足条件可以二分。
2012-09-09 17:46:21 1397
原创 2012 ACM/ICPC Asia Regional Tianjin Online 1006_you are the one 解题报告
HDOJ 4283 You are the one2012 ACM/ICPC Asia Regional Tianjin Online F 题一道很悲情的DP题,比赛的时候没做出来,比赛结束后第17分钟才AC。关键思想:最先进栈的元素最后出栈,例如第i个元素入栈,如果它最终的位置是在k,那么i 到 k 这一段中不可能有 k 位置后的数出现。#includei
2012-09-09 17:41:10 3129
原创 再谈升/降序子序列——POJ1631
上一篇文章介绍了如何求解最长升/降序子序列的长度,这篇文章讨论另一个与升/降序子序列有关的问题。问题:将一个序列划分成单调的子序列最少可划分成多少个?例如。序列:1、4、2最少可划分成2个单调递增的子序列:{1,2}、{4}或{1,4}、{2};乍一看,觉得这需要动规,其实这可以贪心。在用动规求序列{1、4、2}的时候,我们要考虑的一个重要问题是,1是与4连接还是与2连接,因为
2012-08-22 00:09:28 2891
原创 求最长升序子序列O(nlgn)的算法---HDOJ 1025
求解最长升/降序子序列是动规的经典问题,朴素动规的时间复杂度为O(n^2),状态的转移方程为dp[i]=max{dp[j]}+1,其中j现在我们对上面的转移方程再做一个限定,当有多个j满足条件时,即有多条转移路径的时候,我们规定选择从元素值最小的那个状态转移,并且用一个数组min[k]来保存dp值为k的最小元素,这样min数组的值是单调递增的,所以在计算dp[i]时就可以用二分
2012-08-20 19:40:31 4876
原创 中位数优先容器
要求编写一个容器,它可支持两种操作:push()和pop(),push(K)操作可将元素K放入容器,pop()操作可将容器中的中位值弹出。例如:push(1),push(2),push(3)后pop()[输出为2]。解决方法,创建一个最大值优先的优先队列,将其记为左队列ql,创建一个最小值优先的优先队列,将其记为右队列qr,我们规定ql不为空时,ql.top()为中位值,记为mid
2012-08-18 11:37:09 1520
原创 线段树-POJ2777
这是一个统计问题,大意是给定两种操作,C A B color:将区间[A,B]涂上颜色color,P A B统计并打印区间[A,B]上颜色的数目,可图颜色的种类不超过30种,区间的长度最大可达100000,给出的操作次数最多可达100000.这是一个经典的线段树题目,由于颜色的数目最多只有30种,所以用32位整形的每个位表示一种对应的颜色是可行的,这样便可以很方便做集合并的操作。#incl
2012-08-17 23:04:28 1013
原创 线段树和单调队列优化DP---POJ2373解题报告
在长为L(的草地(可看成线段)上装喷水头,喷射是以这个喷水头为中心,喷水头的喷洒半径是可调节的,调节范围为[a,b]。要求草地的每个点被且只被一个喷水头覆盖,并且有些连续区间必须被某一个喷水头覆盖,而不能由多个喷头分段完全覆盖,求喷水头的最小数目。很容易想到,这可以用dp解决,定义dp[i]为覆盖[0,i]区间所需的的最小喷头数,则dp[0]=0,dp[i]=min{dp[i-2*
2012-08-11 12:14:50 2078
原创 dancing links详解
Dancing links是一种能高效实现Knuth的X算法的技术,它可以使很多搜索问题得到极大的优化。假设x是一个双向链表中的一个节点,L[x]表示X的前驱,R[x]表示x的后继,则R[L[x]] = R[x], L[R[x]] = L[x]这一操作可以把x从链表中移除,这是众所周知的,当然,一个细致的程序员还会用 L[x] = R[x] = x或 L[x] = R[x] = NUL
2012-08-06 00:36:45 8277
转载 今天五四不谈技术---转载“走过场的大学”
作者:邓峰 熬过漫长的应试教育岁月,结束完阴魂不散的高考,疲惫的莘莘学子们满怀着对未来的希望,一脸激动地踏进了大学校园。大学是早年每个学生心中的乌托邦,是梦想的港湾。一个人不能选择自己出生的故乡,却可以选择自己心灵的故乡。大学正是千千万万年轻人心灵的故乡,是一个人足以用一辈子的时间来怀念的地方。 然而,中国学子似乎远远没有这种运气,别说留下什么回忆,就是连高中
2012-05-04 11:42:30 2938
原创 JAVA 数字图像处理----非白即黑的灰,2B青年的自画像
昨天晚上在科学松鼠会上看到一篇题为“计算机原来要晃一晃才好用”的文章,里面提到了一种计算机处理数字信号时常用的抖动技术,觉得蛮有意思的所以今天就用万恶的JAVA写了生成二直图像的小程序。截图:程序中使用的acm jtf包在http://jtf.acm.org/可以下到,推荐刚开始学java的同学去看Eric S. Roberts的《the art and Science of
2012-05-01 18:20:10 2407 3
原创 USACO 4.2 cowcycle 搜索 DFS
吼吼,趁机秀一秀我的小捷INPUT FORMAT:(file cowcycle.in)第一行是 F 和 R,表示前齿轮和后齿轮的数量。第二行包括 4 个数字:F1,F2(25 题目要求:找出符合下面的标准:前面齿轮的型号(齿的数量)必须在给定的范围内。后面齿轮的型号(齿的数量)必须在给定的范围内。在每一种齿轮组合中
2012-04-30 22:57:52 756
原创 JAVA 处理 大数 POJ1001
由于种种原因最近一段时间一直情绪不佳,写几个水题娱乐一下。话说去年寒假学了点JAVA,写了些推箱子之类的东东,但还从来没有用JAVA A过题,很早就听说JAVA直接用大数类做大数和高精度手段很是淫荡,今天就来水几把寻点乐子。POJ1001DescriptionProblems involving the computation of exact values of ve
2012-04-25 14:05:51 2166
原创 USACO 4.2 job processing
A factory is running a production line that requires two operations to be performed on each job: first operation "A" then operation "B". Only a certain number of machines are capable of performing eac
2012-04-23 16:17:31 1113
原创 Codeforces Round #116 E-Cubes 180E
E. Cubestime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputLet's imagine that you're playing the following sim
2012-04-23 13:25:02 800
原创 USACO 4.2 The Perfect Stall网络流解最大二分图匹配
如下图所示方式构图,每条边的容量为1,则从source到sink最大流量就等于cow与stall的最大匹配代码:#include#include#define MAX 410using namespace std;FILE *in,*out;int map[MAX][MAX],nodes,ans,layer[MAX];bool table[MAX];void fl
2012-04-19 16:10:27 1530
原创 USACO 4.2 Drainage Ditches
这是一道网络流的模板题,只要知道网络流的基本概念应该就能水过,在此只贴代码,有空我会写一篇网络流入门的文章供还没有接触过网络流的朋友阅读。代码:#include#include#include#define MAX 210#define oo 10000001using namespace std;int map[MAX][MAX],arcs,nodes,_max,layer
2012-04-18 21:10:34 834 1
原创 USACO 4.1 Fence loop
题目大意是找出图中权值和最小的一个环,DFS加剪枝就行了,唯一有点恶心的是题目的输入给的是每条边的信息,不太好转化成图论中节点和边的集合,索性就不转化成图的常用表示形式了,这样倒是更方便一点。这道题的主要思路就是暴力搜索,用变量min来记录最小环的周长,min初始化为图中所有边长的和,枚举以每一条边为起点沿着某一固定方向走,如果找到了一个比min 还小的环,则更新,如果在搜索过程中发现路径的长
2012-04-15 23:14:11 732
原创 USACO4.1 Fence rails DFSID
所有题在A不掉之前都是难题,而当你把它A掉后,它便成了水题,而在你A掉它之前,你永远不知道它有多水。这道题,我最先想到的是DP,觉得就是一个典型背包问题,不过是背包多了一点而已,然而再仔细一想N=50便意味着50个背包,128^50的运算量,不用细算也知道这样的程序跑出来太阳都熄火了,所以这样的DP是走不通的。想到这个section的主题是讲搜索优化的,那就试试搜索吧,直接DFS加剪枝?嗯,想
2012-04-07 22:58:34 1172
原创 线段树_POJ2528_解题报告
题意:给定一些海报,可能互相重叠,告诉你每个海报宽度(高度都一样)和先后叠放次序,问没有被完全盖住的海报有多少张。海报最多10,000张,但是墙有10,000,000块瓷砖长。海报端点不会落在瓷砖中间。题解:这是一个区间覆盖的问题,由于海报的数量最大有10,000张,O(n^2)的暴力算法是达不到时限要求的,用O(nlgn)的线段树来做应该时间上不会有问题了,但是直接做线段树会超内存,
2012-03-27 13:03:38 619
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人