摘要: 题目链接:http://poj.org/problem?id=1611题意:在某个学校里,有n个人,有m个社团,每个社团有k个人,学生的编号从0到n-1。首先是0号同学得了一种病,然后呢与他接触的同学就会被列为怀疑对象,间接与他接触的同学也被列为怀疑的对象(也就是a患病,a与b有过接触,b与c有过接触,那么b、c都是怀疑对象),问一共有多少人患病与被列为怀疑对象。思路:将这些社团的人分成几堆,如果任意两个社团中有同一个人,那么这两个社团的人就是一堆的,最后统计与0在同一堆的人又多少,那就是所要求的答案;用并查集将这些人分类,然后统计就行了。代码: View Code 阅读全文
posted @ 2013-09-02 19:33 oucacm 阅读(122) 评论(0) 推荐(0)
摘要: 【题意】有一个烤肉机,每次可以同时烤M份肉。有N个顾客,第i个顾客li时刻到达,ri时刻走, 点了ai份肉,每份肉需要bi的时间烤,客人的每份肉可以分开烤,比如一份肉需要t时间烤,如果平均分出t份,那么能在1个时间内烤完。问能否满足所有顾客的需求。【分析】烤肉机相当于每个单位时间段都在工作,可以一直往里面加肉,每个单位时间段最多可以容下M份肉。对于每个客人,其需求需要在(li,ri)的区间内 完成,因为烤肉可以分开烤,则只需考虑单位份烤肉所需时间然后累加,即只用考虑ai*bi 2 #include 3 #include 4 #include 5 6 using namespace... 阅读全文
posted @ 2013-09-02 17:22 oucacm 阅读(119) 评论(0) 推荐(0)
摘要: Amber的论文《最小割模型在信息学竞赛中的应用》【最大权闭合图】定义一个有向图G=(V,E)的闭合图,是该有向图的一个点集,且该点集所有出边都还指向该点集。即闭合图内的任意点的任意后继也一定在闭合图中。【建图】源点向正权点加边,容量为权值;负权点向汇点加边,容量为权的绝对值;有限制关系的点加边,容量为INF。【定理】最大权闭合图 = 正权值和 - 最小割 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 #define INF 1e8 9 #define MAX_VECT 5... 阅读全文
posted @ 2013-09-02 14:37 oucacm 阅读(114) 评论(0) 推荐(0)
摘要: http://acm.csu.edu.cn/OnlineJudge/contest.php?cid=2036A:法一:p = 0.a1a2a3...ak(b1b2...bm)A = p*10^k = a1a2a3...ak.(b1b2...bm)B = p*10^(k+m) = a1a2a3...akb1b2...bm.(b1b2...bm)于是得B-A = p(10^(k+m)-10^(k))为整数 p = (B-A)/(10^(k+m)-10^(k));直接辗转相除 化为最简形式#include#include#include#include#define LL long long#def 阅读全文
posted @ 2013-08-31 20:04 oucacm 阅读(265) 评论(0) 推荐(2)
摘要: 【题意】:略【分析】:黑白棋盘,转化为二分图。1、最大点权独立集 = sum - 最小点权覆盖集2、最小点权覆盖集 = 最小割 = 最大流3、贴了个dinic模板【Mark】:开刷网络流《最小割模型在信息学竞赛中的应用》 1 /*** 2 Author:wangsouc 3 4 ***/ 5 6 #include 7 #include 8 #include 9 #define MAX_EDGE 250500 10 #define MAX_VECT 2555 11 #define INF 1000000 12 #include 13 using namespace std;... 阅读全文
posted @ 2013-08-30 22:04 oucacm 阅读(184) 评论(0) 推荐(0)
摘要: 题意:给定一个母串S,和S的子串a,b,c,d。求子串能最多(最少)覆盖母串的多少字符?每个子串必须用上,且只能使用一次。Sample:hellohello答案为:4 6分析:每个子串只能使用一次,且全部用上,集合状态,状态压缩。然后动态规划:dp[i][j][k]表示S串里考虑到第i个字符,字符串集合状态为k(二进制状态压缩),从当前第i个字符已经向后覆盖了j个字符的最大(小)覆盖数。初始dp[i][0][0] = 0;状 态转移:对于当前状态dp[i][j][k],枚举每一个字符串p,其不在集合k中,如果它能和母串S从当前第i个字符开始匹配,那么考虑把它放在这里, 状态转移到i+1阶段,d 阅读全文
posted @ 2013-08-30 15:35 oucacm 阅读(228) 评论(0) 推荐(0)
摘要: 题意:往集合里面添加删除数,集合中的数是按从小到大排列的,询问下标模5等于3的数的和。解法:预先把所有出现的数离散化,建立一颗线段树,线段树每个节点存储这样几个值,f[i]表示当前这个节点表示的区间内出现的那些下标模5等于i的和,维护sz表示该段区间内出现的数的个数,没有出现的地方f为0。考虑合并两段区间,即如何由两个儿子节点推出父亲节点,考虑父亲的f[i],等于左儿子的f[i] + 右儿子的f[x], x与左儿子的sz有关,即(x + sz %5) %5 = i ;可解出x。如此查询只需要查询1号节点的f[3]即可,可以先考虑一棵平衡树,每次由儿子更新父亲也是如此,然后考虑线段树,线段树不过 阅读全文
posted @ 2013-08-28 13:26 oucacm 阅读(124) 评论(0) 推荐(0)
摘要: 给定三角形,求出给定三角形内部整点的个数。 1 /* 2 Memory: 116 KB Time: 0 MS 3 Language: C++ Result: Accepted 4 By coolwind 5 */ 6 #include 7 #include 8 9 #define MAXN 10510 struct Point {11 int x,y;12 Point(int a = 0, int b = 0)13 :x(a),y(b){}14 };15 16 Point pt[3];17 18 int gcd(int ... 阅读全文
posted @ 2013-08-28 11:25 oucacm 阅读(123) 评论(0) 推荐(0)
摘要: Pick定理的几个出人意料的应用Brain Storm|2009-08-10 1:34|31 Comments | 本文内容遵从CC版权协议转载请注明出自matrix67.com考虑直线x+y=n,其中n是一个素数。这条直线将恰好通过第一象限里的n-1个格点(如上图,图中所示的是n=11的情况)。将这n-1个点分别和原点相连,于是得到了n-2个灰色的三角形。仔细数数每个三角形内部的格点数,你会发现一个惊人的事实:每个三角形内部所含的格点数都是一样多。这是为什么呢?Pick定理是说,在一个平面直角坐标系内,如果一个多边形的顶点全都在格点上,那么这个图形的面积恰好就等于边界上经过的格点数的一半加上 阅读全文
posted @ 2013-08-28 11:22 oucacm 阅读(175) 评论(0) 推荐(0)
摘要: 这题意思是一群一开始互不认识的猴子,可能会打架,打过一场就是朋友,一开始互不相识的猴子打架的时候,不一定自己动手,回去找自己朋友中战斗力最强的猴子,然后,两个打手打架,当然,如果自己最NB时,自己上,但是,打完之后,两只参战的猴子战斗力减半,但是,两方会成为朋友。说了这么多废话,就是建立一堆大顶堆,并且实现堆与堆的合并,利用左偏树是可并堆的特点,进行模拟即可,如果两方在一个朋友圈里,输出“-1”。/*Memory: 2184 KB Time: 406 MSLanguage: C++ Result: AcceptedBy coolwindNote:这个写的略搓,通用性... 阅读全文
posted @ 2013-08-26 21:29 oucacm 阅读(146) 评论(0) 推荐(0)