03 2018 档案

摘要:1 #define N 100010 2 int m,n;int p[N],r[N],w[N];int u[N],v[N]; 3 int cmp(int i,int j){return w[i]<w[j];} //间接排序函数! 4 int find(int x){return p[x]== x ? x:p[x]=find(p[x]);} //并查集的find,寻找结点x的... 阅读全文
posted @ 2018-03-23 14:42 摇啊摇啊 阅读(112) 评论(0) 推荐(0)
摘要:ADT: 1 const int maxn = 150; //表示集合x,y中顶点个数的最大值 2 3 int n,m; // n,m分别表示 x,y中顶点个数 4 bool g[maxn][maxn]; //邻接矩阵,1表示有连接 5 int cx[maxn];//最大匹配中,与x集合中x[i]匹 阅读全文
posted @ 2018-03-22 15:02 摇啊摇啊 阅读(189) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/SYCstudio/p/7260613.html 这个博主写的很好完全看得懂就不自己写了 方便自己使用还是把模板抄出来吧。 ADT: 1 const int max_e = 55000; 2 const int max_v = 250; 3 const 阅读全文
posted @ 2018-03-21 12:57 摇啊摇啊 阅读(150) 评论(0) 推荐(0)
摘要:在总流量最大的前提下,总费用最小的流为最小费用最大流。 分别用$c$和$a$表示每条边的容量和费用。 和最大流问题的区别要注意的是:可能存在平行边,它们的费用不同,所以无法合并这两条弧。(先假设图存在平行边和反向边),这样就可以用邻接矩阵cap和cost来保存各边的容量和费用了。 最小费用路算法和E 阅读全文
posted @ 2018-03-20 21:45 摇啊摇啊 阅读(172) 评论(0) 推荐(0)
摘要:最近感冒身体状况奇差,直接走堂了上周的3391,OJ也没怎么看(看了也看不进去看进去也不会),乘着灌了一吨药睡醒后结合紫书和课件,参考其他大佬的博客写完这个方面的概念和ADT吧。 1.概念 最大流定义:从$s$(通常规定为$1$)运东西到$t$(通常规定为$n$),最多运多少的问题称为最大流。关注点 阅读全文
posted @ 2018-03-19 14:24 摇啊摇啊 阅读(289) 评论(0) 推荐(0)
摘要:在回溯法中,每个决策对应于给一个节点产生新的子树,而解的生成过程对应一颗解答树,节点的层数就是下一个待填充位置$cur$。 在多阶段决策的最优化问题,大多可以用dp解决,状态转移则类似于回溯法中的解答树。 UVa 116 $d(i,j)$表示从第此处出发到达最后一列的最小和,要求字典序最小,就同时要 阅读全文
posted @ 2018-03-12 22:39 摇啊摇啊 阅读(186) 评论(0) 推荐(0)
摘要:当时就觉得回溯法学的不是很好,在处理dp多状态问题前,温习一遍回溯法:把待求解的问题分成不太多的步骤,每个步骤只有不太多的选择,就可以考虑回溯法。 普通八皇后思路:从64格子中选8个格子,枚举的话一共有$C^{8}_{64}=4.426X10^{9}$解法,不爆才怪。观察基本性质,每一行只能有一个皇 阅读全文
posted @ 2018-03-12 13:47 摇啊摇啊 阅读(163) 评论(0) 推荐(0)
摘要:本题难在设置状态表示。 题目要求先从左到右,再从右到左沿x轴方向经历坐标系上的点(1~n点),可以考虑成两条路径,分别从最左到最右,分别经历不同点且不能重合(除了起点和终点)。可以想到用$d(i,j)$表示一条路走到了$i$,一条路走到了$j$。因为两条路加起来要cover路径上所有点,所以$d(i 阅读全文
posted @ 2018-03-12 12:36 摇啊摇啊 阅读(179) 评论(0) 推荐(0)
摘要:$E=mc^{2}$ 很多问题都可以转化为DAG上的最长(短)路路径,最多(少)路径数(路径的权值为1) 对于状态d[i]的设置可以有两种: 1.d[i]表示从i出发的最长路 一般这种时候会考虑打印路劲,在出发之后会同时用一个数组来记录路径,而且这种方式一般通过回溯找到最大值。这种方法多数情况下不被 阅读全文
posted @ 2018-03-10 16:06 摇啊摇啊 阅读(1634) 评论(0) 推荐(0)