摘要:
给出一个只有01的字符串,请找出最长的的01的数目的相等的字串。。这题最暴力的解决方法就是就是先预处理每个区间01的数目,然后枚举起点和重点,时间复杂度是O(N^2)。下面我们来介绍一种O(n)时间复杂度的做法。。。首先我们可以用一个数组B[i]把串A当中A[0...... 阅读全文
摘要:
因为商业线只能坐一次我们可以枚举做哪条。。先用两次迪杰斯特拉算法预处理出从起点到各个点的最短距离和终点到各个距离的最短路= =假设d1[]存的是起点到其他点的距离,d2[]存的终点到其他点的距离。那么总共的时间就是d1[a]+T(a,b)+d2[b];#include... 阅读全文
摘要:
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1475这题一开始我是用贪心去做的,但是一直没过。。。貌似贪心并不能得到最优解法。然后这道题用优先队列来写首先我们先把对于第i的中间站... 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=2680题意就是给你n个起点,一个重点,问从起点到终点最小的花费是多少= =首先这题是有向图,然后我们把起点看成是终点,终点看成起点。然后用迪杰斯特拉算法求最短路。然后因为我们把终点和... 阅读全文
摘要:
这题真的是并查集的经典题目= =题意是给出n个人,然后给出若干的操作1表示让a,b成为朋友,若与前面的朋友敌人关系相矛盾,输出-12表示让a,b成为敌人,若与前面的朋友敌人关系矛盾输出-13判断a,b是否是朋友,是输出1,不是输出04判断a,b是否是敌人,是的话输出1... 阅读全文
摘要:
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2444 就会给你n个人,m个朋友关系,然后让你判断是否能把他们分成两组然后里面谁也不认识对方如果能,输出最大的组的人数 解法,先判断二分图,然后在二分图匹配 #include... 阅读全文
摘要:
这题是最小费用最大流的问题,给出边的关系和花费,然后给吃D和K,D是要运输的数据流。K表示每条边能运输的最大流量,这图的应该构造无向图,而且自己发现,凡是要无向图的网络流问题最好还是用邻接表来表示这样就可以解决重边和反向边问题,之前用邻接矩阵来表示一直错= =我们还要... 阅读全文
摘要:
题意:有6种类型的志愿服,给你n件衣服(n一定是6的倍数),然后m个志愿者,接下里有m行,有两个字符串,表示志愿者能穿的衣服的尺码,问你是否所有志愿者都能找到合适的衣服= =最大流:0为源点,m+7为汇点,源点到每种志愿服的容量是n/6,志愿服和志愿者之间的容量是1,... 阅读全文
摘要:
题意:给你n个插座,然后接下俩的n行是对插座类型的描述,然后给你m个电器,接下来的m行是对电器的描述,电器的种类和电器的插座类型,然后给出k种转换器,接下来的k行就是第一个字母表示该转换器可以和那种电器相连,第二个字母表示该转换器可以和那个插座相连,注意一种转换器可以... 阅读全文
摘要:
这题的题意是给出n的点,每个点有容量限制,然后给出每条边的运输的容量,问你从XX城市运送电量到YY城市最大的电量是多少。。最大流的模板题,直接用EK算法。。XX城市设定0,YY城市为n+1。还有一点要注意的是在求最小的残量的是还要看每个顶点容量。。#include#i... 阅读全文
摘要:
这题是要你求从顶点1到顶点n然后再从n到1的最小的花费,注意两次走的边不能有相同的。。。原本单蠢的以为求一遍最短路,然后把边给删掉。。然后在跑一遍。后来想想不行啊,这样第一次的最短路会造成第二次回去无路可走。其实关键是在求第二次的最短路的时候我们要对图进行一下处理,把... 阅读全文
摘要:
这是一道关于拓扑排序的题,并且要输出其中一种拓扑序列#include#include#include#includeusing namespace std;const int maxn=150;int c[maxn];int topo[maxn],t;int G[ma... 阅读全文
摘要:
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1221这道题前19行给出城市的联通关系比如1 3 2 3 4 3 4 5 6 1 6 1 7 2 12 13 1 8 ... 阅读全文
摘要:
这道题是要判断图中是否存在负环。。。用BF算法。。从0开始松弛存在负环,说明经过n-1次的松弛之后,还可以继续松弛。BF算法#include#include#include#include using namespace std;#define inf 9999999... 阅读全文
摘要:
很裸的一道dijk算法题,因为顶点数太多无法用邻接矩阵表示,所以要用临界表来表示AC代码#include#include#include#include #include#includeusing namespace std;using namespace std;c... 阅读全文
摘要:
这道题要注意重边问题= =#include#include#include#includeusing namespace std;const int maxn=1000;int G[2*maxn][2*maxn];int f[2*maxn],d[2*maxn];#de... 阅读全文
摘要:
题意:给出n的城市m条通道,然后每条通道最大的承载人数给出来了,然后给出起点和终点以及要搭载的人数,问最少要走多少次才能把全部游客送到目的地因为导游每次都要跟团,所以每条交通道路搭载的最大人数要减1= =克鲁斯卡尔算法,就会排序的时候按照运输人数的从大到小排序,然后当... 阅读全文
摘要:
prim算法是构造最小生成树的一种算法= =个人觉得写起来没有克鲁斯卡尔那么优美首先我们用个二维数组G[N][N]来保存权值,用low[N]数组来保存最小权值,vis[N]来保存是否已经添加到MTS中然后结合poj1258实现prim算法#include#includ... 阅读全文
摘要:
这题的意思是给出p个点,然后p的点可以由无线电通信或者是卫星通信,然后只有m的点能通过卫星通信,然后用无线电通信的点的距离不能超过D超过D的话惠氏通信的成本增加,问在使通信成本就低的情况下求D这题还是最小生成树,用prim算法构造MST,在构造的过程将每次算的最小的权... 阅读全文
摘要:
这题还是最小生成树 ==已经修建的道路的权值位0,然后再用克鲁斯卡尔算法#include#include#includeusing namespace std;const int maxn=2000;int p[maxn];struct node{ int u,... 阅读全文