上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 42 下一页
其实也算不上模板,代码很简单http://acmpj.zstu.edu.cn/JudgeOnline/showproblem?problem_id=1086上面这题可以理解什么是最小表示法方法在这里http://www.cnblogs.com/ACAC/archive/2010/05/23/1742349.html字符串最小表示求字符串的循环最小表示:上面说的两个字符串同构的,并没有直接先求出Min(s),而是通过指针移动,当某次匹配串长时,那个位置就是Min(s)。而这里的问题就是:不是给定两个串,而是给出一个串,求它的Min(s),eg:Min(“babba”) = 4。那么由于这里并非要 Read More
posted @ 2012-03-17 19:25 Because Of You Views(1498) Comments(0) Diggs(0)
简单数学题,推出结果后直接计算即可不取double 会wrongView Code #include<cstdio>#include<cstring>__int64 C(__int64 n, __int64 m){ __int64 s = 1; int i, j; for (i=1,j=n; i<=m; i++, j--) s = s * j / i; return s;}int main(){ int n,s; int i,j,k; while(scanf("%d%d",&n,&s)!=EOF) { double sum=0, Read More
posted @ 2012-03-16 16:40 Because Of You Views(267) Comments(0) Diggs(0)
http://acm.hrbeu.edu.cn/index.php?act=problem&id=1001&cid=19View Code #include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 100010;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int ok[maxn<<2];void build(int l,int r,int Read More
posted @ 2012-03-15 21:32 Because Of You Views(392) Comments(0) Diggs(0)
先判断有无可行流,再求最大流http://blog.csdn.net/fp_hzq/article/details/6772320在上一题上下界流中,我们已经知道了怎么判断无源汇上下界网络流有无可行流把每一天看成一个点,每个女孩也看成一个点,增加源和汇s、t,源向每一天连上[0,d]的边,每一天与每个女孩如果有拍照任务的话连上[l,r]的边,每个女孩与汇连上[g,oo]的边,于是构成一个有上下界的图所以这道题目我们可以转换一下只要连一条T → S的边,流量为无穷,没有下界,那么原图就得到一个无源汇的循环流图。接下来的事情一样:原图中的边的流量设成自由流量ci – bi。新建源点SS汇点TT,求 Read More
posted @ 2012-03-15 19:41 Because Of You Views(1253) Comments(0) Diggs(0)
这道题目算是让我学到了不少建图的细节题目保证从s到t有T条无相同道路的路径,即每条边只能用一次,每个点可以多次经过然后要求所有的路径中最大的边的最小值每条边只能用一次,可以联想到网络流,边容量为1求最小的最大可以用二分判断二分的值是否满足条件:s、t的最大流是否>=T讲一下建图的细节双向建图,即满足条件的每条边的容量都为1,可以双向流而对于zoj 3583,每个点只能经过一次(每条边当然也只能经过一次),而且是无向图,所以也需要双向流,但是由于一个点只能经过一次,就需要拆点了,拆点后再求最大流就能保证最大的流只经过每个点最多一次。View Code #include<stdio.h Read More
posted @ 2012-03-14 23:08 Because Of You Views(722) Comments(0) Diggs(0)
有点特殊,每个长方体的底面的左下角都在(0,0 , 0)所以计算面积的时候就简单很多了。用线段树,对x坐标建树rm[rt]:区间最右端y值mx[rt]:管辖区间内最大的y值sum[rt]:管辖区间内的总面积cover[rt]:是否被某个y值完全覆盖求体积的时候,从下往上不好求因为如果y大的长方体在下面,y小的在上面,从下往上计算的时候会多算比如 5 5 5 1 1 10两个长方体,在计算5到10的体积时,面积并的和是25,实际上是1而从上往下求体积就不会出现这种问题View Code #include<cstdio>#include<cstring>#include&l Read More
posted @ 2012-03-14 11:35 Because Of You Views(517) Comments(0) Diggs(0)
DP[i][j]表示以i为根节点的子树总共使j个客户收到信息的最大报酬dp[u][j+k]=max(dp[u][j+k],dp[u][j]+dp[v][k]-w) u是v的父节点,w为u、v的边权View Code #include<cstdio>#include<cstring>#define max(a,b) a>b?a:bconst int INF = 1000000000;const int maxn = 3010;int head[maxn],dp[maxn][maxn],n,m;int num[maxn];struct EDGE{ int v,w,ne Read More
posted @ 2012-03-13 18:19 Because Of You Views(341) Comments(0) Diggs(0)
对于每个点有两个数in[i],out[i],表示拆掉i的所有入边的代价和拆掉所有出边的代价对于一条边(u,v)有两种操作可以将其拆掉,要么拆除u的所有出边,要么拆除v的所有入边,两个操作至少要有一个被执行这就相当于最小点权覆盖(可以参考那篇最小割的论文)中的一条边中的任意一个点都可以覆盖这条边所以,一个操作看做一个点,一条边相当于连接两个操作的边,一个最小点权覆盖的模型就建立好了建图过程如下:新建源点汇点s、t对于每个点u,拆成u u+ns->u 容量为out【u】;u+n->t容量为in[u]对于每条边u->vu->v+n,容量为无穷大求最小割,可得最小代价,(画个简 Read More
posted @ 2012-03-13 11:23 Because Of You Views(1142) Comments(0) Diggs(0)
由上一篇可得最大权闭合图的权值为sum-max_flowsum为正的权值和,max_flow为重新建图后的最大流求最大流后,在残留网络中从s出发dfs能搜到点都为最大权闭合图中的点,即这个最小割对应的是最大权闭合图View Code #include<stdio.h>#include<string.h>const int MAX=100005;const int INF=1000000000;struct{ int v,c,next;}edge[1000000];int E,head[MAX];int gap[MAX],cur[MAX];int pre[MAX],dis Read More
posted @ 2012-03-12 23:35 Because Of You Views(863) Comments(0) Diggs(0)
[网络流]最大权闭合图(转载)来自:http://hi.baidu.com/%C6%AE%BB%A8%C4%EA%B4%FA/blog/item/45d4bb1765e7044721a4e960.html以下内容参考 胡伯涛 《最小割模型在信息学竞赛中的应用》,感谢他为我们提供这么优秀的论文。看不懂以上论文的同学,可以试试看一下以下内容,本文无大量的数学符号,方便阅读理解。首先我们由一道题来引入,见[线性规划与网络流24题 2] 太空飞行计划问题。这道题中,实验依赖于仪器,而实验和仪器都有权值,且仪器为负,实验为正。这里闭合图的概念就很好引出了。在一个图中,我们选取一些点构成集合,记为V,且集 Read More
posted @ 2012-03-12 16:10 Because Of You Views(14346) Comments(3) Diggs(20)
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 42 下一页