2012年9月16日
摘要: 大意:刘备将营地连在了一起,陆逊想要估计出多少人,所以就侦查到了没个营地的容量Ci,即最多有多少士兵,又估计了一下从i营地到j营地最少有多少士兵,求总共最少有多少人,或者估计有误(出现了正、负环)。思路:建模。s[j]-s[j-1] >= k;s[i]-s[i-1] >= 0;s[i]-s[i-1] <=Ci;CODE:#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<queue>usingnamespacestd 阅读全文
posted @ 2012-09-16 21:17 有间博客 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 建图:constintSIZE=100010;constintINF=0x3f3f3f3f;intu[4*SIZE],w[4*SIZE],v[4*SIZE],next[4*SIZE]; //一般是4*SIZEintfirst[SIZE],d[SIZE];int sum[SIZE];intn,m;//n个顶点,m条边。memset(first,-1,sizeof(first));voidread_graph(intu1,intv1,intw1){for(inte=0;e<n;e++){scanf("%d%d%d",&u[e],&v[e],&w[e 阅读全文
posted @ 2012-09-16 18:25 有间博客 阅读(1328) 评论(0) 推荐(1) 编辑
摘要: 大意:班长给孩子们分配糖果,其中有些孩子们有一定的要求。CODE:s[i]-s[i-1]<=Ci另外,DISCUSS中:因为是班长做主,所以程序必须是从1号为起点,否则如果以n为起点,那就是爱管闲事的那人做主。(具体原因你可想想单源最短路的更新原理)再举个简单的样例:21 2 52 1 6如果以1为起点得到的答案是5,也就是班长5个糖果,爱管闲事的0个糖果(当然两者可以同时加上任意的正整数)。如果以2为起点,得到的答案是6,也就是班长得0个,爱管闲事的人得6个。虽然6比5大,但是根据题意,分配糖果是班长做主,而他是想惩戒爱管闲事者,所以他肯定会按第一种分配方案分配,所以答案仍旧是5,所以 阅读全文
posted @ 2012-09-16 18:16 有间博客 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 算法简介SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种优化,减少了不必要的冗余计算。 它可以在O(kE)的时间复杂度内求出源点到其他所有点的最短路径,可以处理负边,但判断负回路不方便。值得注意的是,得到可行解后,可以看成新的约束:xi-xj<=d[i]-d[j],即d[i]为xi-x0的最大值。由此可以看出,SPFA和Bellman-Ford算法解决差分约束系统问题时,实际上是把约束条件强化了,使得满足任意约束条件的值都能构造出一个完整的解。同样的,当约束方程为>=时,求出的xi-xj>=d[i]-d[j],故d[ 阅读全文
posted @ 2012-09-16 17:50 有间博客 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 大意:一群牛排成一队,其中某些牛需要在一定的距离内,而有些则要离开一定的距离。思路:差分约束。s[i]-s[i-1] <= ds[i]-s[i-1]>=ds[i]-s[i-1]>=0如果有环,输出-1,如果N可以无限远,即1与N不连通,输出-2,其他情况输出1与N的最大距离。CODE:#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<queue>usingnamespacestd;constintSIZE=1000 阅读全文
posted @ 2012-09-16 17:26 有间博客 阅读(215) 评论(0) 推荐(0) 编辑