摘要: SAP最大流。。额额额额额额额额,看不懂的说,把题解贴出来吧,好歹也能算个模版。。HDU-4289-Control本题可以看成是求A到B的最大流,因为权值在点上,还要进行拆点。#include #include #include #include using namespace std;#define MAXM 100000#define MAXN 405#define INF 2e9struct eee{ int v,cap,next; eee(){}; eee(int v,int w):v(v),cap(w){}}edge[MAXM];int first[MAXN];in... 阅读全文
posted @ 2012-09-21 00:18 z.arbitrary 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 题意:找出最短路和比最短路大一个单位的路的条数分析:使用K短路算法会超内存,因此看完题解,要使dij变形解决问题记录最短路和次短路,和最短路的条数和次短路的条数。dij松弛的条件改变下,有四种情况1.比最短路短2.等于最短路3.长与最短路但短于次短路4.等于次短路View Code #include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;#define MAXN 1005#define MAXM 10050#define I 阅读全文
posted @ 2012-09-14 10:51 z.arbitrary 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 题意:求K短路先介绍A*算法:A*算法是一种启发式的搜索,不是纯粹的盲目式搜索,A*算法中有个估价算法g(n),对于每个点而言,都有一个g(n)和h(n)来确定的f(n),实际上就是以f(n)为参考权值来确定搜索的方向,在这里,我们的h(n)表示的是从s点出发到n这个点现在走过的路径长度,而g(n)表示的是从n到e的最短长度的大小,那么就确定了搜索的优先性,这里的A*算法的估价函数g(n)是完美估价,搜索的方向一定是对的。分析:K短路可以用A*+spfa求。。先求出终点到各个点的最短距离d[1~n],这个变是A*算法的估价函数d[1~n];建图的时候建一个正向的一个反向的,反向图用来求估价终点 阅读全文
posted @ 2012-09-12 21:13 z.arbitrary 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 有种感觉才从一个坑跳出来又进入了另一个坑!!!!!!!!!太苦逼了。。。有木有!!!!!!!!@missa_chen贱人贱人贱人!!!!!!! 阅读全文
posted @ 2012-09-10 10:25 z.arbitrary 阅读(121) 评论(1) 推荐(0) 编辑
摘要: 题解原文请戳这里这题完全不会。。看了题解好像似懂非懂。。。先把题解弄这里来,慢慢研究题意:GG有两张奖券,面额分别为V1、V2,准备给MM买礼物。当天是MM生日,所以MM 还可以免费得到一份礼物。礼物有价格和幸福值两个参数,并且礼物分为特殊礼物和普通礼物,特殊礼物是一定要全部到手的。两张奖券不可以合并使用,一种礼物也只能买一次。问MM最大幸福值是多少,如果特殊礼物不能全部得到MM会不高兴,幸福值为-1。分析:这是一个二重01背包,因为还有免费的礼物,故还要增加一维用f[v1][v2][s]表示奖券V1,V2分别使用v1,v2时,且状态为s时候(s=1表示已经免费得到一份礼物了,s=0表示还木有 阅读全文
posted @ 2012-08-25 15:21 z.arbitrary 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 今天决定刷图论了,做到至少比赛的时候图论的题能够写出来。。。POJ-1062-昂贵的聘礼用Dijkstra即可。。因为这题可以抽象出边上有权值,点上也有权值。。我们可以先忽略点上的权值,用Dijkstra算出1~n的最短路,最后再加上点上的权值,然后求所有点的最小值即可。。否则把点上的权值也带入求最小值,会wa。。。我被wa了N次了。。。这题有等级制度,故需要枚举区间进行多次最短路。View Code #include <cstdio>#include <cstring>#include <iostream>#define MAXN 105#define M 阅读全文
posted @ 2012-08-18 16:53 z.arbitrary 阅读(404) 评论(5) 推荐(0) 编辑
摘要: 多重背包二进制优化模版先上int dp[N];void OneZeroPack( int v , int n , int w ){ for( int i = v ; i >= n ; i-- ) dp[i] = max( dp[i] , dp[i-n] +w ) ;}void CompletePack( int v , int n , int w ){ for( int i = n ; i <= v ; i++ ) dp[i] = max( dp[i] , dp[i-n] +w ) ;}void MultipliePack( in... 阅读全文
posted @ 2012-08-17 21:27 z.arbitrary 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 下面文章抄袭到hello kity的。。原文章地址请戳这里/*******************************hello kity********************************************/一直弄不明白单调队列是什么,在网上也找不到易懂的介绍。最后结合别人博客上的介绍和程序看才理解是怎么回事。我们从最简单的问题开始:给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k.要求: f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i = 0,1,...,N-1问题的另一种描述就是用一个长度为k的窗在整数数列 阅读全文
posted @ 2012-08-16 00:07 z.arbitrary 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 本内容摘自xieshimao牛,内容连接为:请戳这里1、本原勾股数:概念:一个三元组(a,b,c),其中a,b,c没有公因数而且满足:a^2+b^2=c^2首先,这种本原勾股数的个数是无限的,而且构造的条件满足:a=s*t,b=(s^2-t^2)/2,c=(s^2+t^2)/2其中s>t>=1是任意没有公因数的奇数!由以上概念就可以导出任意一个本原勾股数组。2、素数计数(素数定理)令π(x)为1到x中素数的个数19世纪最高的数论成就就是以下这个玩意儿:lim(x->∞){π(x)/(x/ln(x))}=1数论最高成就,最高成就!!!有木有!!!3、哥德巴赫猜想(1+1)一个大 阅读全文
posted @ 2012-08-14 10:42 z.arbitrary 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 看了一晚上hh大牛的划分树,总算看懂了是怎么回事了。。hh大牛的博客,请戳这里划分树是快排+线段树先来一模版 POJ-2104-K-th Number题意:给出n,m,n代表N个数,m代表查询的次数,再输入m行l,r,k;求在[l,r]区间中第k小的数;#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 100050#define lson l,mid,rt<<1#define rson mid+1,r,rt< 阅读全文
posted @ 2012-08-14 00:25 z.arbitrary 阅读(275) 评论(0) 推荐(0) 编辑