上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 30 下一页
摘要: 给一个字符串S,求出所有前缀,使得这个前缀也正好是S的后缀。升序输出所有情况前缀的长度。KMP中的next[i]的意义就是:前面长度为i的子串的前缀和后缀的最大匹配长度。明白了next[i],那么这道题就很容易做了#include #include #include #include using namespace std;const int maxn=400005;char str[maxn];int next[maxn];int n;int ans[maxn];void getnext(char *str,int len){ next[0]=-1; int i=0,j=-1; ... 阅读全文
posted @ 2014-02-12 14:48 辰曦~文若 阅读(226) 评论(0) 推荐(0)
摘要: 题意:给你一个图,图中点之间会有边权,现在问题是把图分成两部分,使得两部分之间边权之和最大。目前我所知道的有四种做法:方法一:状态压缩#include #include #include #include /*用状态压缩枚举,297ms。题意:给你一个图,图中点之间会有边权,现在问题是把图分成两部分,使得两部分之间边权之和最大。情况是对称的,也就是说枚举所有的分类情况中,有一半是冗余的。举个例子来说,有5个节点,1、2、3分配为A组,4、5分配给B组,这个分类的策略所计算的结果和1、2、3分配为B组,4、5分配给A组是一样的。因此对称的就不需要再考虑了,如状态压缩时101和010,只要考虑其中 阅读全文
posted @ 2014-02-02 21:20 辰曦~文若 阅读(223) 评论(0) 推荐(0)
摘要: 本题目输入格式同1984,这里的数据范围坑死我了!!!1984上的题目说边数m的范围40000,因为双向边,我开了80000+的大小,却RE。后来果断尝试下开了400000的大小,AC。题意:给出n个点,m条边。 接下来m行,每行对应u,v,len,字符(字符表示v位于u的哪个方向,在本题没有丝毫用处) 表示u和v的路径长度为len。注意本题是双向边! 给出k个查询,让你求两点间的距离。思路:可以这样处理:先处理出每个节点i到根的距离dist[i]。 设根节点1到a的路径和1到b的路径的最后一个相同的节点为u,即a和b的最近公共祖先。 ... 阅读全文
posted @ 2014-02-02 20:08 辰曦~文若 阅读(326) 评论(0) 推荐(0)
摘要: 题意: 给N个字符串,要求出一个序列,在该序列中,后一个串,是由前一个串加一个字母后得来的(顺序可以改动)。 问最多能组成多长的序列。思路:将给的字符串排序,再对所有的字符串按长度从小到大排序,若长度相同,则按字典序排。 然后找出符合条件的字符串A和B(即B可由A加一个字母得来),建立边的关系。 之后对所有根节点进行dfs深搜,如果当前的长度大于目前的maxlen,则更新,同时记录前驱节点。 最后根据前驱节点,输出路径即可。#include #include #include #include #include #include #in... 阅读全文
posted @ 2014-01-28 16:52 辰曦~文若 阅读(562) 评论(0) 推荐(0)
摘要: 下面两个写得很清楚了,就不在赘述。http://blog.sina.com.cn/s/blog_5cd4cccf0100apd1.htmlhttp://www.cnblogs.com/lyy289065406/archive/2011/07/30/2122265.html我这里没用trie来表示颜色种类,而是用数组对颜色离散化,之后就差不多一样了,用并查集判断是否连通,再判断奇顶点的个数是否为0个或2个。这题我开始大意了,刚开始就只判断奇数度的节点个数是否为0或2,没有考虑判断图的连通性。以后要注意碰到图的问题要考虑连通性的问题。#include #include #include #incl 阅读全文
posted @ 2014-01-27 18:34 辰曦~文若 阅读(8629) 评论(0) 推荐(0)
摘要: 题意:一个员工A的直接上司是那些薪水大于A,并且身高>=A的人中薪水最少的一个。 主席CEO的薪水最高,且身高也是最高的。 有多组数据。 每组数据给出m个员工,和q个询问。 每个员工有id、薪水、身高。 对于每个询问,给出某个id,让你求该员工的直接上司的id和该员工的下属的个数。 若该员工是CEO,则他的上司的id为0。 先将员工按薪水从小到大排序,然后for循环一遍,求某一节点的直接父亲,顺带求节点的孩子个数。#include #include #include #include #include #include #i... 阅读全文
posted @ 2014-01-22 18:01 辰曦~文若 阅读(372) 评论(0) 推荐(0)
摘要: Tarjan算法的详细介绍,请戳:http://www.cnblogs.com/chenxiwenruo/p/3529533.html#include #include #include #include #include #include /*AC一开始读取数据的方式并不好,运行900多ms。后来参照了别人的读取方式,600+ms。*/using namespace std;const int maxn=905;int n,m;int anc[maxn]; //记录以i为公共祖先的个数对int indegree[maxn]; //记录入度int vis[maxn];vector quer.. 阅读全文
posted @ 2014-01-22 15:07 辰曦~文若 阅读(195) 评论(0) 推荐(0)
摘要: 本文来自:http://www.cnblogs.com/Findxiaoxun/p/3428516.html写得很好,一看就懂了。在这里就复制了一份。LCA问题:给出一棵有根树T,对于任意两个结点u,v求出LCA(T,u,v),即离根最远的结点x,使得x同时是u和v的祖先。把LCA问题看成询问式的:... 阅读全文
posted @ 2014-01-22 11:57 辰曦~文若 阅读(649) 评论(0) 推荐(0)
摘要: 刚在百度搜索了一下这道题的题解, 因为看到有别人用动态规划做的,所以想参考一下。结果顺带发现了有那么几个网站,上面的文章竟然和我这篇一模一样(除了一些明显的错别字外),我去,作者还是同一个人Admin,还是同一天发表。我才是原作者!!!这里特别声明,请尊重版权,可以转载或者复制,但是请注明出处!!!思路:我是转化成求最短路来解的。 将每个平台看作两个点,即左端点和右端点,然后将符合条件的两点相连,边长即为两点之间的垂直距离和水平距离。 将jimmy起始的地点看作顶点0,而地面看作顶点2*N+1,这样就是求0到2*N+1的单源最短路径,用dijkstra就可以搞定... 阅读全文
posted @ 2014-01-22 09:46 辰曦~文若 阅读(876) 评论(0) 推荐(0)
摘要: 思路描述来自:http://hi.baidu.com/perfectcai_/item/701f2efa460cedcb0dd1c820也可以参考黑书P89的积水。题意:Farmer John有一个碗,形状如下,给你一个w*h平面,每个1*1的位置有一个高度Hij,问用这个碗来装牛奶,最多可以装多少体积。例如:555515555这个可以装4体积,只有中间的1位置可以装;再如:555512555这个可以装1体积,只有中间的1位置可以装,而装到2时就会开始漏出,因为液体是可以流动的;分析:由例子二可以很深刻的理解如果在一个桶边上打一些洞,那么之后这个桶能装的水取决于最低的那个洞的高度,接着这个思路 阅读全文
posted @ 2014-01-21 17:05 辰曦~文若 阅读(432) 评论(0) 推荐(0)
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 30 下一页