03 2014 档案
摘要:这题可以用次小生成树解,这里用Kruskal算法来做。每条边除维护u,v,w外,还维护:used:表示这条边是否加过eq:表示有没有与这条边相等的边del:删除标记,以便删边之用如果对于一个最小生成树的的边A,有一条与之权值相等的边B,则考虑把A删掉,再求一次最小生成树,看求出的总权值是否与前一个最...
阅读全文
摘要:Constructing RoadsTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5227Accepted Submission(s): 1896...
阅读全文
摘要:Dijkstra算法:解决带非负权重图的单元最短路径问题。时间复杂度为O(V*V+E)算法精髓:维持一组节点集合S,从源节点到该集合中的点的最短路径已被找到,算法重复从剩余的节点集V-S中选择最短路径估计最小的节点u,对u的所有连边进行松弛操作。即对j=1~n,dis[j] = min(dis[j]...
阅读全文
摘要:题意很好懂,但是不好下手。这里可以把每个点编个号(1-25),看做一个点,然后能够到达即为其两个点的编号之间有边,形成一幅图,然后求最短路的问题。并且pre数组记录前驱节点,print_path()方法可用算法导论上的。代码:#include #include #include #include #...
阅读全文
摘要:这题其实很简单,每个人肯定都往上走,才能保证尽快赢,所以无非是看谁离根节点近,即深度小。。用并查集中的findset思想,不断找父节点一直到根节点来找深度就可以了。代码:#include #include #include #include #include using namespace std;#define N 100007int fa[N],n,cnt;void init(){ for(int i=1;i<=n;i++) fa[i] = i;}void findset(int x){ if(x != fa[x]) { findset(fa[...
阅读全文
摘要:class "note" 源码你仔细读完这篇文章,可能感觉不知所云,如果在这个纷杂乱世的世界,你能深入内心的对话自己,也许你可以能找到与我共鸣的地方,希望这篇文章可以帮到你。效果图:
阅读全文
摘要:这题昨天晚上花了我1个小时50多分钟来搞,都没有搞定。。后来看别人代码,直接暴力枚举第一个数的值来做。。最多1000*1000的复杂度。当时怎么就没想到呢?还有为啥我的方法不对呢。。暴力方法代码:#include #include #include #include #include #define...
阅读全文
摘要:Dijkstra模板题,也可以用Floyd算法。关于Dijkstra算法有两种写法,只有一点细节不同,思想是一样的。写法1:#include #include #include #include #include #define Mod 1000000007using namespace std;#...
阅读全文
摘要:这题的坑点在POJ输出double不能用%.lf而要用%.f。。。真是神坑。题意:给出一个无向图,求节点1到2之间的最大边的边权的最小值。算法:Dijkstra题目每次选择权值最小的边进行延伸访问,最坏情况下每条路径都要访问,复杂度O(n^2)代码:#include #include #includ...
阅读全文
摘要:文章译自:http://www.techtimetea.com/5-making-mobile-application/1.开发这个APP的目的是什么?2.我应该做开发什么类型的APP?3.开发项目中需要哪些工具?4.先设计还是先敲代码?5.免费还是付费?1.开发这个APP的目的是什么?在应用市场上有成千上万的移动应用,所以只有做一个市场上没有的应用才会给你带来下载量。山寨应用通常只可能存活一段时间,所以,你的应用的排他性会保证你的应用的成功,尝试和解决一个现今至今为止没有被任何一个开发者解决的问题。如果你在做一个健康或者健身类的APP,你可以寻找别的这类APP,看哪些地方能够成为你能提供给用
阅读全文
摘要:这题做的我好苦啊,编码调试整整搞了一个多小时,而且调到天昏地暗才调出来。。回归正题,这题是一道本人做过的比较烦,比较无聊的题之一。题意是一个人,在m个影星里有k个喜欢的影星,然后给出n场电影,每场电影给出演出的人的编号,0表示不确定,根据这些人的编号判断是否一定是最喜欢的电影(喜欢的影星最多的电影),或者一定不会是最喜欢的电影,或者是不确定。做法是算出每场电影最少有多少个喜欢的影星和最多有多少个喜欢的影星,并且得出在所有电影中最少有多少个喜欢的影星和最多有多少个喜欢的影星。如果分别用MIN和MAX来表示,则有三种情况:1.如果这场电影的MIN不小于任意一场电影的MAX,则这场电影必为最喜欢的电
阅读全文
摘要:比赛链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=41856#overviewA.多种解法。可以dfs倒序染色,如mathlover神的代码:#include#includeusing namespace std;struct no...
阅读全文
摘要:搜索是ACM竞赛中的常见算法,本文的主要内容就是分析它的 特点,以及在实际问题中如何合理的选择搜索方法,提高效率。文章的第一部分首先分析了各种基本的搜索及其各自的特点。第二部分在基本搜索方法的基础上提出 一些更高级的搜索,提高搜索的效率。第三部分将搜索和动态规划结合,高效地解决实际问题,体现搜索的广泛应用性。第四部分总结全文。文章在分析各种搜索的同时,分析了我们在解题中应该怎样合理利用它,理论结合实际,对我们的解题实践有一定的指导意义。【 Abstract 】 Search is a algorithm which is often seen in ACM/ICPC .The main ide
阅读全文
摘要:简单搜索,我这里用的是dfs,由于棋盘只有8x8这么大,于是想到dfs应该可以过,后来由于边界的问题,TLE了,改了边界才AC。这道题的收获就是知道了有些时候dfs没有特定的边界的时候要自己设置一个合适的边界。这题推导可知,任意两点之间马踩6步之内一定能够到达,6步之内还未搜到说明绝对不是最优结果,果断退出。所以这里的res开始时最小设定为6即可,随着设的res的增大,运行时间越来越多,因为深搜可以有很多的分支,不采取较小的边界的话,可能会浪费很多时间在无用的搜索上,所以需要如此剪枝。反复提交验证发现,res设不同值的运行时间如下:res = 6 102msres = 10 222msres.
阅读全文
摘要:一段区间的最值问题,用线段树或RMQ皆可。两种代码都贴上:又是空间换时间。。RMQ 解法:(8168KB 1625ms)#include #include #include #include #include #include using namespace std;#define N 50003i...
阅读全文
摘要:采用优先队列做BFS搜索,d[][]数组记录当前点到源点的距离,每次出队时选此时eng最小的出队,能保证最先到达的是eng最小的。而且后来用普通队列试了一下,超时。。所以,能用优先队列的,就要用优先队列。代码:#include #include #include #include #include #include using namespace std;#define N 1003struct node{ int x,y; int eng; bool operator a.eng; }};char ss[N][N];int dis[N][N];int n,m,res;...
阅读全文
摘要:大白书上的例题,具体讲解见大白书,最好用用一个Log数组直接求k,这样就是纯O(1)了#include #include #include #include #include using namespace std;#define N 100003int a[N],num[N],le[N],ri[N...
阅读全文
摘要:优先队列。做法:维护两个优先队列:quesell 和 quebuy, 一个是小值优先,一个是大值优先。每次push的时候,都取各自的Top元素,比较价格,如果卖的比卖的出价低,则成交,各自的要买和要卖的股票数量减少能够减少的最大值,此时的DP(DealPrice)被记录下来。具体见代码:#include #include #include #include #include #include #include using namespace std;#define N 100003struct SELL{ int price,num; bool operator a.price; ...
阅读全文


浙公网安备 33010602011771号