
acm
文章平均质量分 75
killua7080
这个作者很懒,什么都没留下…
展开
-
poj1274
今天没事做了第一道网络流的题,真是很神奇,可以把各种场景建模成网络流来做poj3281也一样,先把食物当成源点然后流到奶牛,再从奶牛流到奶牛,再从奶牛到饮料。#include#include#include#include#include#includeint c[420][420],f[420][420],a[420];int s=0,t,n,m;using namesp原创 2012-10-18 00:14:16 · 617 阅读 · 0 评论 -
zoj1654
参考《算法艺术与信息学竞赛》P334 皇家卫士把每个横向线段当作集合A 每个纵向线段当作集合B如果是空地则A,B中的点有一条边,最大二分匹配如o***就对应了一条横向线段A1,和4条纵向线段B1,B2,B3,B4其中A1和B1的交点是空地,所以他们之间有一条边,所以每个边都会对应一个点,这个点为一个横向线段和纵向线段的交点#include#include#inc原创 2012-11-07 21:33:12 · 718 阅读 · 0 评论 -
hdu1823 二维线段树
#include#include#include#include#include#define MAX 101#define L(x) (x<<1)#define R(x) (x<<1|1)using namespace std;class subnode{ public: int l,r; double val; sub原创 2012-12-01 14:12:12 · 338 阅读 · 0 评论 -
zoj 1610 线段树
线段树参考:http://wenku.baidu.com/view/aa601208763231126edb11ab.html计算颜色时维护两个参数cl,cr,返回区间两端点的颜色1,如果区间为单色则对应颜色+12.如果node。col为-1,则递归调用左右子区间,若返回的颜色相同则对应颜色-1详见代码#include #include #include #inclu原创 2012-11-16 12:31:47 · 227 阅读 · 0 评论 -
poj2353 数装数组
参考讲解http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=binaryIndexedTrees提供sum和add操作每次操作复杂度o(logn)#include#include#include#define MAX 32002using namespace std;int a[MAX];int c[MA原创 2012-11-14 00:17:16 · 432 阅读 · 0 评论 -
匈牙利算法和km算法
匈牙利算法用来求二分图最大匹配km算法求带权的最大匹配参考http://wenku.baidu.com/view/be01d3e84afe04a1b071de54.htmlkm算法#include #include #include #include using namespace std;#define MAX 100int n;int weight[MA原创 2012-11-08 13:00:00 · 2459 阅读 · 0 评论 -
zoj1157
#include#include#include#include#include#include#define MAX 1010using namespace std;vectorname;bool can[MAX][MAX];string recept[MAX];string device[MAX];bool map[MAX][MAX];bool visit[MAX];原创 2012-11-07 19:55:49 · 317 阅读 · 0 评论 -
poj2239
#include#include#include#include#define MAX 501int p,n;bool map[MAX][MAX];bool visit[MAX];int match[MAX];bool find(int k){ int i,j; for(i=1;i<=n;i++) { if(map[k][i]&&visi原创 2012-11-05 22:52:17 · 309 阅读 · 0 评论 -
poj3041
#include#include#include#include#define MAX 501int p,n;bool map[MAX][MAX];bool visit[MAX];int match[MAX];bool find(int k){ int i,j; for(i=1;i<=n;i++) { if(map[k][i]&&visi原创 2012-11-05 22:37:00 · 281 阅读 · 0 评论 -
poj2536
#include#include#include#include#include#include#include#define MAX 101using namespace std;int p,n;bool map[MAX][MAX];bool visit[MAX];int match[MAX];struct point{ double x; double y;}原创 2012-11-01 23:23:08 · 298 阅读 · 0 评论 -
poj1325
#include#include#include#include#define MAX 101int p,n;bool map[MAX][MAX];bool visit[MAX];int match[MAX];bool find(int k){ int i,j; for(i=1;i<=n;i++) { if(map[k][i]&&visi原创 2012-10-31 23:52:16 · 404 阅读 · 0 评论 -
poj 1469
#include#include#include#include#define MAX 302int p,n;bool map[MAX][MAX];bool visit[MAX];int match[MAX];bool find(int k){ int i,j; for(i=1;i<=n;i++) { if(map[k][i]&&visi原创 2012-10-30 23:09:33 · 340 阅读 · 0 评论 -
划分树
参考http://wenku.baidu.com/view/8fc6bc365a8102d276a22fa0.html划分树可以用来以O(lg(n))时间求出任意区间第k大元素觉得用到的思想和《算法导论》第九章p109的思想比较像,如果在一个序列里求第K大的元素,不一定需要对序列完全排序而是每次都进行快排的一步,从序列中选出一个x把比x小的都放在x前大的都放在x后边,然后看x前有几个元原创 2012-12-01 20:22:41 · 305 阅读 · 0 评论