随笔分类 -  ACM/ICPC

摘要:这是比较经典的DP 有一点很明显 却很难肯定的 那就是在最好的分组方案中,每组中两根较短的筷子在有序筷子数列中一定是相邻的 dp[j][i]表示从前i根筷子中挑出j组(不考虑第三根) dp[j][i]=min{ dp[j][i-1];(i>j*2) dp[j-1][i-2]+(hash[i]-hash[i-1])^2;(n-i>... 阅读全文
posted @ 2008-08-05 22:22 Hdu-Lost 阅读(756) 评论(0) 推荐(0) 编辑
摘要:十分无耻的题目 开了300W的内存才过,这个测试数据也太变态了吧~~~ 把原先用以比较结束的布尔值进行了替换,加入num值表示是进行了多少次前缀匹配,只要通过查找,返回匹配数就行了~~~上次的模版的某些部分有问题,重新进行了修正... Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.C... 阅读全文
posted @ 2008-08-05 20:03 Hdu-Lost 阅读(417) 评论(1) 推荐(0) 编辑
摘要:DK大牛最近分遗产,又偷了一个过来,真是好东西!! 算法流程 必须步骤:preprocess 插入:读字符串入a后insert 查找:读字符串入a后find Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using names... 阅读全文
posted @ 2008-08-05 01:46 Hdu-Lost 阅读(450) 评论(0) 推荐(0) 编辑
摘要:呵呵,又从DK那偷代码了,好兴奋哈,以下是这个算法的简单介绍,不过我用它去解决HDU的1532 竟然TLE,郁闷.到时候再继续问问DK吧...so 烦躁. 哈哈 终于经过大牛的指点 原来本算法是从0开始标号的...... Dinic是个很神奇的网络流算法。它是一个基于“层次图”的时间效率优先的最大流算法。 层次图是什么东西呢?层次,其实就是从源点走到那个点的最短路径长度。于是乎,我们得... 阅读全文
posted @ 2008-08-04 01:13 Hdu-Lost 阅读(12137) 评论(26) 推荐(0) 编辑
摘要:KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yi的顶标为B [i],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[i]+B[j]>=w[i,j]始终 成立。KM算法的正确性基于以下定理: 若由二分图中所有满足A[i]+B[j]=w[i,j]的边(i,j... 阅读全文
posted @ 2008-08-03 15:39 Hdu-Lost 阅读(4487) 评论(6) 推荐(1) 编辑
摘要:这是来自zjut-vegetable的好东西~~收藏下,邻接表是个好东西! Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using namespace std; const int maxn=205; const int in... 阅读全文
posted @ 2008-08-03 12:44 Hdu-Lost 阅读(417) 评论(0) 推荐(0) 编辑
摘要:每次在s-t之间找出费用最小的一条路径即单源最短路,如果t点不再被访问到,则算法终止。否则,按着最短路径找出最小剩余容量c,最大流量加上c,再更新最短路径上的边,前向弧减去c,反向弧加上c,并且造一条逆向的费用边,最小费用加上每条边的花销,每条边的花销=单位费用*c。 最小费用最大流既能求最小费用,又能得出最大流,是更为一般的模型。 牛人哈~~~自己也懒得看原理了,代码中... 阅读全文
posted @ 2008-08-01 19:23 Hdu-Lost 阅读(2126) 评论(6) 推荐(1) 编辑
摘要:1. 最大流最小割定理介绍: 把一个流网络的顶点集划分成两个集合S和T,使得源点s ∈S且汇点t ∈T,割(S,T)的容量C(S,T) =∑Cuv, 其中u∈S且v∈T。 从直观上看,截集(S,T)是从源点s到汇点t的必经之路,如果该路堵塞则流从s无法到达t。于是我们可以得到下面的定理: 最大流最小割定理: 任意一个流网络的最大流量等于该网络的最小的割的容量。 这个定理的证明这里就不... 阅读全文
posted @ 2008-08-01 18:50 Hdu-Lost 阅读(3300) 评论(4) 推荐(0) 编辑
摘要:若求 1---B内的数与D GCD=1 的个数 若D可分解为p1*p2*p3...*pn 则个数g=B-(B/p1+B/p2+...+B/pn)+(B/(p1*p2)+B/(p2*p3)+...B/(pn*p1))-(B/(p1*p2*p3)+B/(p2*p3*p4)+...B/(pn*p1*p2))-......+..... 若B=100 d=13*19 g=100-(100/1... 阅读全文
posted @ 2008-07-31 00:48 Hdu-Lost 阅读(643) 评论(4) 推荐(0) 编辑
摘要:今天忽然心血来潮,想重新去做下华东赛中没做出的题目,这道便是当时磨了我2个多小时没磨出来的题目,重新看题目的时候就觉得思路十分清晰,题目要求出1到b,与1到d之间gcd=1的数的个数,想多不用想,先想到欧拉函数.我们假设b#include using namespace std; const long MAXN=100005; bool hash[MAXN];//用以素数筛选 _... 阅读全文
posted @ 2008-07-31 00:28 Hdu-Lost 阅读(502) 评论(0) 推荐(0) 编辑
摘要:毕达哥拉斯定理就是我们中国的勾股定理,即直角三角形中: a^2+b^2=c^2 毕达哥拉斯数就是满足上式的正整数解(a,b,c) 下面我们来找出所有的毕达哥拉斯数: 设a/c=x b/c=y,则原式变成: x^2+y^2=1 这个式子可以转化成: y/(1+x)=(1-x)/y 由于abc都是正整数,所以x,y也是有理数,所以上式等于一个共同的比值t,而有理数t可以转化两个整数的比,即 假设y/(... 阅读全文
posted @ 2008-07-30 15:11 Hdu-Lost 阅读(1113) 评论(2) 推荐(0) 编辑
摘要:传说中2004年亚洲赛伊朗德黑兰赛区的B题,也是当时比较水的题目,做这道题目用了我2天去想公式,真的是很痛苦的事情,好了,在自己痛苦了几天之后,把代码给贴上吧,都做了详细的注释,是用二分枚举+贪心判定实现的...可我还是不能保证以后碰到后会不会做出来,郁闷的题目. Code Code highlighting produced by Actipro CodeHighlighter (f... 阅读全文
posted @ 2008-07-30 14:45 Hdu-Lost 阅读(253) 评论(0) 推荐(0) 编辑
摘要:一个比较直白的上下文无关语法分析,传说中是使用编译原理的算法(CYK)进行语法分析的,本人因此查了好多书,晚上看了好久,还是不能明白,诶,难道智力有限.....对于一个不教编译原理这门课的学校....实在无语了,太郁闷了,看书都看不懂.参照了月光和sunny大牛的程序,自己思考了很久,仿照着写了一遍,效率还不错,可惜就是这么一大堆的递归让人很晕,虽然根据题意能解释得通,但还是不能把握全... 阅读全文
posted @ 2008-07-29 15:59 Hdu-Lost 阅读(272) 评论(0) 推荐(0) 编辑
摘要:这绝对是一道ACM的经典题,做了我3天的时间,睡眠严重不足,终于在一瞬间AC了,看着这4000多B的代码,我泪水那个狂流啊! 网上很少有SPFA实现差分约束的例子,因此,我就这道题进行一下总结吧. 首先介绍一下什么是差分约束 比如有这样一组不等式: X1 - X2 v,都有: d(v) v的权值。 显然以... 阅读全文
posted @ 2008-07-26 22:44 Hdu-Lost 阅读(1679) 评论(1) 推荐(0) 编辑
摘要:SPFA即shotest path faster algorithm,由意思就可以看出该算法效率比较高。 其实SPFA就是bellman-ford算法的一个优化。 具体做法是用一个队列保存待松弛的点,然后对于每个出队的点依次遍历每个与他有边相邻的点(用邻接表效率较高),如果该点可以松弛并且队列中没有该点则将它加入队列中,如此迭代直到队列为空。 据说平均效率是O(E),可见对边稀疏的图用此算法效果是... 阅读全文
posted @ 2008-07-26 03:46 Hdu-Lost 阅读(1367) 评论(0) 推荐(0) 编辑
摘要:邻接表+优先队列 真是好快啊 拿了HDU 2066的第二(第一的代码比我短100B) Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include using namespace std; typedef struc... 阅读全文
posted @ 2008-07-25 21:32 Hdu-Lost 阅读(554) 评论(2) 推荐(0) 编辑
摘要:使用优先队列+邻接表的prime算法果然比以前的O(n^3)要快很多哈 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include using namespace std; typedef struct { ... 阅读全文
posted @ 2008-07-25 20:33 Hdu-Lost 阅读(809) 评论(0) 推荐(0) 编辑
摘要:最近研究了这东西 感觉十分有用 在对于少边的情况下效果十分明显 本程序使用优先队列存储边信息 使用并查集判定是否已经连通 O(eloge)的复杂度 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include us... 阅读全文
posted @ 2008-07-25 19:32 Hdu-Lost 阅读(414) 评论(2) 推荐(0) 编辑
摘要:这是一道省赛题目 解法是构造概率矩阵A 根据要进行的次数n 使用二分法计算转移矩阵(A)^n 再使用转移公式res=init*(A)^n 可以很快计算出最终答案 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1#include ... 阅读全文
posted @ 2008-07-25 15:04 Hdu-Lost 阅读(325) 评论(0) 推荐(0) 编辑
摘要:简单的单源最短路径 使用二叉堆+邻接表+DIJ实现~~~ Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1#include 2#include 3#include 4#include 5using namespace st... 阅读全文
posted @ 2008-07-25 13:48 Hdu-Lost 阅读(407) 评论(0) 推荐(0) 编辑