上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 18 下一页
摘要: 二分图匹配。 每个点分为俩个点0和1,表示有床的人和要睡觉的人。跑最大流。 图中所有边的流量均为1 1.S向每个有床的人(0)连一条边。 2.每个不回家的人和校外的人(1)向T连一条边。 3.每个有床的人和自己连一条边(0->1)。 4.每个认识的人连一条边(0->1). 阅读全文
posted @ 2016-06-16 13:50 invoid 阅读(135) 评论(0) 推荐(0) 编辑
摘要: dp. f[i][j]表示放置第i个数有j个逆序对的方案数。 s[i][j]维护前缀和(f[i][0]~f[i][j])。 状态转移方程 f[i][j]=s[i-1][j]-s[i-1][max(j-1,0)]。 oi界十大水题。 #include #include #include using namespace std; const int mod = 10000; const ... 阅读全文
posted @ 2016-06-16 11:20 invoid 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 前缀和。 维护一下前缀和,枚举。 按道理复杂度在当时是过不去的吧。。 #include #include #include using namespace std; const int maxn = 5000 + 10; const int k = 5001; int s[maxn][maxn]; int n,r,res; int main() { memset(s,... 阅读全文
posted @ 2016-06-15 22:05 invoid 阅读(157) 评论(0) 推荐(0) 编辑
摘要: BSGS算法 给定y、z、p,计算满足yx mod p=z的最小非负整数x。p为质数(没法写数学公式,以下内容用心去感受吧) 设 x = i*m + j. 则 y^(j)≡z∗y^(-i*m)) (mod p) 则 y^(j)≡z∗ine(y^(i*m)) (mod p)(逆元) 由费马小定理y^( 阅读全文
posted @ 2016-06-15 20:50 invoid 阅读(760) 评论(1) 推荐(0) 编辑
摘要: 凸包,(旋转卡壳)。 首先要求的4个点肯定在凸包上,所以先求一个凸包。 然后枚举第一个点,和它的对角线。然后另外俩个点分别与它们构成一个三角形 根据凸多边形的性质,三角形的移动方向是单调的,所以这样枚举的复杂度为O(n^2)。 #include #include #include #include #define eps 1e-6 using namespace std; const... 阅读全文
posted @ 2016-06-15 13:30 invoid 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 树状数组,离线处理。 首先把询问按左端点的大小升序排序。 从左往右扫描的过程中,将一个颜色第一次出现的位置变为0,第二次出现的位置变为1. #include #include #include using namespace std; const int maxn = 1000000 + 10; struct Query { int l,r,id; }q[maxn]; st... 阅读全文
posted @ 2016-06-14 20:10 invoid 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 凸包,floyd求最小环。 首先第三个变量是可以由变量1,2得到的,所以可以省去。 然后如果产品在由原材料构成的凸包里,它就是可以被合成的。 所以问题就是要求包含所有产品的最小的凸包。 所以所有取到的边都在确定的一侧,所以先判断出哪些边可以取,跑floyd最小环就可以了。 #include #include #include #include #define eps 1e-10 u... 阅读全文
posted @ 2016-06-14 18:07 invoid 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 线段树维护联通性。 题目下方有分析。 题解里面说的行数等于题目中的行数-1. 经过分析一共(r1,c1)->(r2,c2)一共有四种方式。 假设r1=1,r2=0。 1.直接过去。 2.先到(0,c1)再过去。 3.先到(1,c2)再过去。 4.先到(0,c1)再到(1,c2)再过去。 用一个数组a 阅读全文
posted @ 2016-06-14 15:19 invoid 阅读(1221) 评论(1) 推荐(0) 编辑
摘要: 费用流。 建图比较重要。 1.S->id[0][0] flow=k。 表示k条路径。 2.S->id[i][0] flow=1, 每次消耗1流量就补充1流量。 3.id[i][1]->T flow=1, 保证每个点都经过一次。 4.id[i][0]->id[j][1] 存在一条路。 这样建图每个点都会被经过一次,而且都是从编号小的点转移过来,满足题目条件。 #include #... 阅读全文
posted @ 2016-06-13 21:43 invoid 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 求导。 大水题。。。 写这个题的目的就是要强调一些细节。 printf输出%时要用2个%。 如果S>a*b的话,直接输出0,如果太小,直接输出100。 求导就不说了// 最关键的地方一笔带过?我连一笔都不带! #include #include #include #include using namespace std; const int maxn = 100000 + 10; ... 阅读全文
posted @ 2016-06-13 18:58 invoid 阅读(76) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 18 下一页