摘要: pku2899 Jamie's Contact Groups题意:在通讯录中有N个人,每个人能可能属于多个group,现要将这些人分组m组,设各组中的最大人数为max,求出该最小的最大值分析:二分group的最大值,+二分图多重匹配View Code #include<iostream>#include<algorithm>#include<string>using namespace std;const int N = 1000+10;const int M = 500+10;int n,m;int map[N][M],vlink[M],link[ 阅读全文
posted @ 2012-04-15 15:51 枕边梦 阅读(1700) 评论(0) 推荐(0) 编辑
摘要: 很明显的一个二分图多重匹配,一开始用网络流直接建图,悲剧的TLE了之后,看了网上解释,缩点,确实大大简化了问题,也就可以AC了,600+ms一开始是这样建图的,先有虚拟源点s,汇点t,从s向每一个人连一条容量为1的边,每一个人向他适合的每一个planet连一条容量为1边,再从每一个planet连一条容量为w[i](该planet的容量)的边,很明显,判断最大流是否等于n即可。n为100000,而m只有10其实,在这道题目里面,人是无差别的,有区别是他们各自的选择,而总共只有10个planet,也就是所有的选择数也就(1<<10)种,所有选择都相同的人完全是等价的!!!可是,没想到还 阅读全文
posted @ 2012-04-15 14:34 枕边梦 阅读(1288) 评论(0) 推荐(0) 编辑
摘要: 网上很多用线段树做的,,好复杂,,,这个是用纯STL做的,map+set转自http://blog.csdn.net/zz_1215/article/details/7318800View Code #include<iostream>#include<vector>#include<algorithm>#include<string>#include<map>#include<set>using namespace std;map<int, set<int> > m;//x映射到一个y坐标的集合m 阅读全文
posted @ 2012-04-15 09:35 枕边梦 阅读(285) 评论(0) 推荐(0) 编辑