12 2012 档案
摘要:http://kicd.blog.163.com/blog/static/126961911200910168335852/近年的acm竞赛中,数学期望问题常有涉及,在以前也常让本人感到很头疼,近来突然开窍,掌握了基本的分析方法,希望对大家有帮助。写得浅薄,可能数学上不够严谨,只供理解。 首先,来看下期望有啥基本的公式。对离散型随机变量x,其概率为p,有对随机变量A、B,有第二条式子是今天的主角,他表明了期望有线性的性质,简单理解就是期望之间可根据关系,简单运算(不严谨的理解)。这就为我们解决一个期望问题,不断转化为解决另外的期望问题,最终转化到一个已知的期望上。举一个求期望最简单的例子,见.
阅读全文
摘要:http://poj.org/problem?id=1035以前做过很类似的 四种情况分开讨论View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 char str[10010][20],cs[10010][20]; 7 int kk[10010]; 8 int judge1(char *x,char *y) 9 { 10 int i,j,k=0; 11 for(i
阅读全文
摘要:http://poj.org/problem?id=3436刚开始做的没拆点 BFS的时候保存了下路径 恰好样例都过了 接着就是各种WA搜了搜解题报告 是将一个电脑拆成2个点 这两点之间限制容量 电脑与电脑之间容量为INF 设置一个源点和汇点 源点全是0 汇点全是1不用保存路径 在最后 比较一下现在的容量和原始容量 差值就为WView Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<queue
阅读全文
摘要:http://poj.org/problem?id=3267对dp没研究 看了看解题报告 还是比较好推的 dp[i] = min{dp[i]-1,dp[j]+i-j-length[k]} 若从J到i包含字典中的单词View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 char word[650][30]; 7 int main() 8 { 9 int i,j,k,n,
阅读全文
摘要:QC的博客搬来http://www.cnblogs.com/pony1993/archive/2012/07/28/2612883.html模板题poj1273http://www.cnblogs.com/pony1993/archive/2012/07/28/2612883.html代码View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<queue> 6 #define INF
阅读全文
摘要:http://poj.org/problem?id=3026BFS求出任意两个A或A和S的最短距离 然后最小生成树求和把所有A和S存起来求BFS任意两点 搜超时了 之后改了改过了View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<queue> 6 using namespace std; 7 #define INF 0x3f3f3f 8 struct node 9 { 10 int
阅读全文
摘要:【基本概念】:二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。最大匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配. 选择这样的边数最大的子集称为图的最大匹配问题,如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹.
阅读全文
摘要:http://poj.org/problem?id=3687样例太唬人了,求得是从1到N重量 而不是排好序的标签逆向建图 把最重的赋给第一个入度为0的标签 如有多个赋给标签大的 这样能保证重量大的在后面View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 int to[301],w[301][301],de[301],tt[301]; 7 int topo(int n
阅读全文
摘要:枚举所有的 排序View Code 1 /* 2 ID: your_id_here 3 PROG: frac1 4 LANG: C++ 5 */ 6 #include <iostream> 7 #include<cstdio> 8 #include<cstring> 9 #include<algorithm>10 using namespace std;11 int w[201][201];12 struct node13 {14 int x,y;15 double s;16 }q[20001];17 void gcd(int x,int y)1
阅读全文
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2493题意:对于一个给定的无向图,求其中有一条边的边权可以减半的情况下 从 A 点到 B 点的最短路。 做法:可以用spfa求出 A 到所有点的最短路 dis 和 B 到所有点的最短路 dis1 。然后枚举所有边(u,v),找出最小的dis[ u ] + w(u,v) / 2 + dis1[ v ] 即可,如果A、B不可达,输出“No solution”。 View Code 1 #include <iostream> 2 #inc
阅读全文
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2497并查集 给定一个无向图 判断s点是否在所有的环中感觉解释有点绕 边输入边判断 s不加入判断 也就是s的祖先一直是s 如果两个节点的祖先一样那说明形成了环若s在环中 那说明节点的祖先肯定是s 否则s不在其中s不参与连接 如果一个环中一个节点不跟相邻节点连接 就形不成环 除非这个节点不在这个环中View Code 1 #include <iostream> 2 #include<cstdio> 3 #include&l
阅读全文