摘要:
学习了一些常用建图方法,又理解了一遍二分,感觉更加清晰了。 1.行列匹配法;在一个矩阵中,加入上面一些点有人,现在有一些箭能将一行或一列的人杀死,问最少需要多少箭?因为箭要最少,所以要尽可能的在一行或一列上,即最小顶点覆盖问题。这时可以通过行列来进行二分匹配;假如位置(1,1),(1,3),(2,2... 阅读全文
摘要:
1 //hdu1853 2 #include 3 #include 4 #define INF 99999999 5 int map[103][103],pr[103],pl[103],visr[103],visl[103],slack[103],match[103]; 6 int ... 阅读全文
摘要:
1 //hdu1507 挺不错的题 2 #include 3 #include 4 #define INF 99999999 5 struct node 6 { 7 int x; 8 int y; 9 }rem[23005]; 10 struct Node 1... 阅读全文
摘要:
今天花了些时间学了下km算法 看了下代码有点大概思路,还是要多做题;Kuhn-Munkras算法流程: (1)初始化可行顶标的值 (2)用匈牙利算法寻找完备匹配 (3)若未找到完备匹配则修改可行顶标的值 (4)重复(2)(3)直到找到相等子图的完备匹配为止引用:KM算法是通过给每个顶点一个标... 阅读全文
摘要:
并查集就是把不同的放到一个集合之中递归int find(int x){ if(x!=pa[x]) pa[x]=find(pa[x]); return pa[x];}void union(int x,int y){ int fx,fy; fx=find(x); ... 阅读全文
摘要:
有不等式x1-x2<=0;x1-x2<=-1;x2-x5<=1;x3-x1<=5;x4-x1<=4;x4-x3<=-1;x5-x3<=-3;x5-x4<=-3; 在每个不等式都是两个未知数的差小于等于某个常数(或大于等于),这样的不等式组就称为差分约束系统;这个不等式组要么无解,要么有无穷多的解; 阅读全文
摘要:
1 #include 2 #include 3 struct stack 4 { 5 int top; 6 int node[100]; 7 }s; 8 int n,map[100][100]; 9 void dfs(int x)10 {11 int i,j;12 ... 阅读全文
摘要:
dij是单源的,只是从一个顶点出发到其它点的最短距离,并且它的全值都是正的,不能够有负值;Bellman-ford 也是单源的,但是他能够完成负权值的图,这是dij无法达到的,并且能够判断是否存在负环,经过修改可以求最长路;SPFA是在Bellman-ford上优化的,所以跟快; floyd算... 阅读全文
摘要:
1 //hdu 1285 2 3 #include 4 #include 5 #include 6 using namespace std; 7 int map[600][600],n,count[600],seq[600],ff; 8 int topo() 9 { 10 ... 阅读全文
摘要:
s是指所有点的度数;由非负整数组成的非增序列s:d1,d2,d3.....,dn(n>=2,d1>=1)是可图的(即能构成图)当且仅当s1:d2-1,d3-1,...dn;是可图的;例如:判断序列s:7,7,4,3,3,3,2,1是否可图。删除序列开头的7,对其后面的7项都减1,得6,3,2,2,1... 阅读全文