上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页
  2012年5月3日
摘要: 匈牙利算法:用增广路求二分图最大匹配的算法。增广路的递归描述:从A出发的增广路径一定首先连向一个在原匹配中没有与点A配对的点B.如果点B在原匹配中没有与任何点配对,则它就是这条增广路的终点,如果点B在原匹配中已经与点C配对,那么这条增广路就是从A到B,在从B到C,在加上从点C出发的增广路径。并且这条从C出发的增广路中不能与前半部分的增广路径有重复的点。bool searchPath(集合x中顶点A){ for(集合Y中顶点B) if(AB有边连接 && B还未匹配) { 标记B已经匹配 if(B在原匹配中没有与任何点配对 ||... 阅读全文
posted @ 2012-05-03 23:44 猿类的进化史 阅读(428) 评论(0) 推荐(0)
摘要: poj 3041 二分图最小点覆盖=二分图最大匹配构图:把行作为x集合,把列当作y集合,如果某个位置有障碍,相应的x和y连边每一条边对应一个障碍。问题转化为选择最小的点覆盖全部的边。#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 505;int uN, vN;bool g[MAXN][MAXN];int xM[MAXN], yM[MAXN];bool chk[MAXN];bool searchPath(int u){ int 阅读全文
posted @ 2012-05-03 22:48 猿类的进化史 阅读(286) 评论(0) 推荐(0)
  2012年4月24日
摘要: 阅读全文
posted @ 2012-04-24 20:48 猿类的进化史 阅读(152) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2012-04-24 20:37 猿类的进化史 阅读(138) 评论(0) 推荐(0)
  2011年9月28日
摘要: 最优装载描述有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。 编程任务: 对于给定的n个集装箱和轮船的载重量C,编程计算装入最多时的集装箱个数。输入输入由多组测试数据组成。每组测试数据输入的第1行中有2个正整数n和C。正整数n是集装箱个数;正整数C是轮船的载重量。接下来的一行中有n个整数,分别表示n个集装箱的重量,它们之间用空格分隔。其中1<=n<=2000,所有正整数不超过231-1输出对应每组输入,输出的每行是计算出的装入最多时的集装箱个数。样例输入4 53 5 2 1样例输出2解决: 阅读全文
posted @ 2011-09-28 21:04 猿类的进化史 阅读(1590) 评论(0) 推荐(0)
  2011年9月27日
摘要: hdoj1394题目大意:刚开始看错了题目,以为求出逆序数就行了,就是求不出样例的值,有看原来是求出一系列的逆序数序列的最小数解决:树状数组#include <iostream>#include <cstdio>using namespace std;#define LL __int64const int N=5000;int n;int num[N+5];int c[N+5];inline int lowbit(int x){ return x&(-x);}void update(int p,int delta){ for(int i=p;i<=n;i+ 阅读全文
posted @ 2011-09-27 19:07 猿类的进化史 阅读(438) 评论(0) 推荐(0)
摘要: hdoj 3743题目大意:就是逆序数解决:树状数组+离散化,以后再也不会让题目给骗了,题目上并没有说是有多组测试数据,一直wa,不知道怎么回事,以为算法出问题了呢,但是可以运行一会时间,却原来是因为有多组测试数据,以后要注意,无论是若题目没有明确说明是一组,就按照多组来。顺便有练习下树状数组的离散化过程,其实和前边的的超快速排序没什么不一样,但是这次是从另一个角度出发的,统计出这个数出现之前所有比这个数大的数的个数,就是需要交换的次数了。#include <iostream>#include <algorithm>using namespace std;const i 阅读全文
posted @ 2011-09-27 16:59 猿类的进化史 阅读(393) 评论(0) 推荐(0)
摘要: hdoj 2838题目大意:给出数,求排成正序的最少时间,每两个数交换的时间是 两个数的值的和。解决:树状数组,只需求出 在这个数加入之前比这个数大的个数,然后更新,再求出这个数加入之前比这个数大的数的总和总共的代价是:cnt*加入的数+比这个数大的数的和#include <iostream>#include <functional>#include <algorithm>using namespace std;#define LL __int64const int N=100000;LL sum[N+5]; //第i个数前比数num[i]大的数的和 LL 阅读全文
posted @ 2011-09-27 15:38 猿类的进化史 阅读(332) 评论(0) 推荐(0)
  2011年9月25日
摘要: hdoj 2642解决:二维树状数组简单最后的时候,必须判断下x与a,y与b的关系,若x>a或者y>b将无法处理#include <iostream>#include <algorithm>using namespace std;const int N=1001;//一个是树状数组,一个是状态标记int c[N+5][N+5];bool s[N+5][N+5];int m;inline int lowbit(int x){ return x&(-x);}inline void update(int x,int y,int inc){ for(int 阅读全文
posted @ 2011-09-25 17:00 猿类的进化史 阅读(182) 评论(0) 推荐(0)
摘要: hdoj 1556解决:树状数组基础,插段求点 数据大小100000/*本来是不打算写这个报告,就是一个基础的插段问点,但是ac之后,又搜了一个代码,让对树状数组有了一点新的认识,就从新改了一下,仍然是可以向后更新,向前求和,只是更新的时候,多更新的要减去,求点的时候向前累计,只有更新到的点才有值*/#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N=100005;int c[N];int n;int lowbit(int x){ retu 阅读全文
posted @ 2011-09-25 13:08 猿类的进化史 阅读(449) 评论(1) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页