procedure2012
It's not worth it to know you're not worth it!
上一页 1 2 3 4 5 6 7 ··· 20 下一页
摘要: [关键字]:动态规划 斜率优化[题目大意]:有n个玩具,每个玩具有一定长度,每两个玩具之间必须有一格单位的空格,且玩具序号必须连续。每造一个箱子的花费为(l-L)2l是箱子使用长度,L为常量。求出装下所有玩具的最小花费。//============================================================================================[分析]:明显的斜率优化动态规划。首先写出转移方程:f[i]=min{f[j]+(s[i]-s[j]+i-(j+1)-L)2},设s'[i]=s[i]+i,L'=L+1,Vx= 阅读全文
posted @ 2012-04-07 00:25 procedure2012 阅读(345) 评论(0) 推荐(0) 编辑
摘要: [关键字]:动态规划 矩阵乘法[题目大意]:给定一个字符集为(0-9)的字符串T(length<=20),求长度为N的不包含T的字符串的总数。//==========================================================================[分析]:首先可以用KMP求next数组的方法求出f[i][j],T串的前i个字符组成的一个串+任意一个字符的后j位和T的前j各字符匹配的方案数。把这个数组乘n遍后f[0][i]就是T的前0个加上n个字符后i为和T前i位匹配的方案数。ans=Σf[0][i](0<=i<=m-1)。而f数 阅读全文
posted @ 2012-04-07 00:07 procedure2012 阅读(1165) 评论(0) 推荐(0) 编辑
摘要: [关键字]:图论 弦图的色数[题目大意]:就是最少的颜色染完所有点使得每条边相邻点都颜色不同,也就是图的色数。//==========================================================================[分析]:首先它给出的图是一个弦图,所以有特殊的算法来求色数。首先用最大势算法求出完美消除序列,然后按照序列的逆序进行染色,每次都染这个点没有连着的边中的最小的颜色。最大势算法,每次都找有最多的相连的以被加入的节点的节点。[代码]:View Code #include<iostream>#include<cstdio& 阅读全文
posted @ 2012-04-06 23:51 procedure2012 阅读(246) 评论(0) 推荐(0) 编辑
摘要: [关键字]:数学[题目大意]:监狱里有n个犯人信奉m种宗教,问有两个信奉相同宗教的犯人埃在一起的方案数。//=============================================================================[分析]:如果想到反向思维你就成功了!所有方案数=mn没有两个宗教相同的犯人挨在一起的方案数是m*(m-1)*(m-1)……*(m-1)=(m-1)n-1,所以答案就是mn-(m-1)n-1[代码]:View Code #include<iostream>#include<cstdio>#include<c 阅读全文
posted @ 2012-04-06 23:36 procedure2012 阅读(170) 评论(0) 推荐(0) 编辑
摘要: [关键字]:Prüfer编码Cayley定理[题目大意]:告诉你N结点的树上部分点的度数,求这样的树一共有多少棵.//==================================================================================[分析]:刚刚看到这题时一点思路也没有,又想了一会儿,还是没思路……这题其实和Prüfer编码Cayley定理有关系,Cayley定理:一个n个节点的无根树有nn-2种形态。这个定理可以通过Prüfer编码来证明,见这里。通过Prüfer编码的推广可以得到n各右度限制的节点的无 阅读全文
posted @ 2012-04-06 23:29 procedure2012 阅读(180) 评论(0) 推荐(0) 编辑
摘要: [关键字]:数学[题目大意]:给出n条直线的k和b(y=kx+b),求出从y轴无限高的地方向下看能看到哪几条直线。//====================================================================================[分析]:因为斜率最小和斜率最大的两条边一定是可以看见的,所以将斜率从小到大排序依次加入一个记录所有可见直线的凸壳中的堆栈。记录每条边的和凸壳左交点的x值(因为直线是无穷长的可以规定一个区间-1e100到1e100使其变成有限的),而右交点是不用记录的因为右交点=下一条直线的左交点。因为是按斜率从小到大的顺序加入 阅读全文
posted @ 2012-04-03 11:51 procedure2012 阅读(184) 评论(0) 推荐(0) 编辑
摘要: [关键字]:图论 网络流[题目大意]:给出一个有向图,定义两种操作:w+(i)删掉i点的所有入边w-(i)删掉i点的所有出边,每种操作都有对应的花费,问删掉所有边的最小花费。//=========================================================================================[分析]:详细的解法还是看《最小割模型在信息学竞赛中的应用》这篇论文吧。[代码]:View Code #include<iostream>#include<cstdio>#include<cstdlib>#i 阅读全文
posted @ 2012-04-02 11:44 procedure2012 阅读(364) 评论(0) 推荐(0) 编辑
摘要: [关键字]:splay[题目大意]:也不说了……太麻烦了……//==============================================================================[分析]:就是NOI2005序列维护的简化版,不用维护太多信息、不用延迟……但是要注意要判断从当前光标往后走n各是否超出了当前文本的范围,特殊判断一下查出范围就当只查到最后一个就行了。听说输出时如果用中序遍历有可能爆栈但是本弱菜不会高级做法,直接递归遍历在tyvj上已经ac。[代码]:View Code #include<iostream> #include< 阅读全文
posted @ 2012-03-30 23:00 procedure2012 阅读(709) 评论(0) 推荐(0) 编辑
摘要: [关键字]:splay[题目大意]:太麻烦了自己找题看吧。//=============================================================================[分析]:就是一些基本的splay操作。将一个区间[a,b]从splay树中取出来要先将a-1旋到根b+1旋到根的右子树,然后以根的右树的左树为根的子树就是区间[a,b]。每个splay树中的节点要保存:数值dat,子书大小size、sum区间和、maxsum最大子段和,mls从左开始连续的最大子段和,mrs同样;same是否要改为普通值,rev是否需翻转。同时为了免去NULL的判 阅读全文
posted @ 2012-03-30 22:42 procedure2012 阅读(584) 评论(0) 推荐(0) 编辑
摘要: 最长公共前缀:LCP(i,j)=lcp(sa[i],sa[j])=height数组中的i+1,j的最小值RMQ解决。可重叠最长公共子串:height整个数组中的最大值不可重叠最长公共子串(pku1743):先根据二分的答案k对height数组分组,若有一组中sa[]的最大和最小值的差大于等于k就说明k成立。可重叠的k 次最长重复子串(pku3261):二分答案判断是否有任意一组中有超过k各后缀。//=====================================================================================不相同的子串的个数(spoj 阅读全文
posted @ 2012-03-29 23:12 procedure2012 阅读(317) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 20 下一页