摘要: 线段树。1、成段更新。每次把区间的每个值都变为它的平方根(如果区间都是一就不用再更新下去了)。2、区间求和。View Code 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<cmath> 5 #include<iostream> 6 #include<algorithm> 7 using namespace std; 8 #define lson l , m , rt << 1 9 #define rson m + 1 阅读全文
posted @ 2012-08-21 01:37 發_ 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 线段树+离散化View Code 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 using namespace std; 5 #define lson l , m , rt << 1 6 #define rson m + 1 , r , rt << 1 | 1 7 8 const int maxn = 100005; 9 int add[maxn<<2]; 10 int sum[maxn<<2]; 11 int x[maxn*3 阅读全文
posted @ 2012-08-20 22:27 發_ 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 题目给出了一个非下降序列,求给定的一个区间内重复个数最多是多少。这题可以用RMQ来做,比较区间两端的个数和不同于最大重复个数(RMQ)。View Code 1 /* 2 Author:Zhaofa Fang 3 Lang:C++ 4 */ 5 #include <cstdio> 6 #include <cstdlib> 7 #include <iostream> 8 #include <cmath> 9 #include <cstring> 10 #include <algorithm> 11 #include <s 阅读全文
posted @ 2012-08-17 23:26 發_ 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 求最大独立集。二分图的独立数等于顶点数减去最大匹配数。由于此题中不明男女,所以把所有人弄成两个集合,故最后要减去最大匹配数的一半。View Code 1 /* 2 Author:Zhaofa Fang 3 Lang:C++ 4 */ 5 #include <cstdio> 6 #include <cstdlib> 7 #include <iostream> 8 #include <cmath> 9 #include <cstring>10 #include <algorithm>11 #include <string 阅读全文
posted @ 2012-08-08 21:15 發_ 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 二分图基础。求二分图最大匹配(匈牙利算法)。View Code 1 /* 2 Author:Zhaofa Fang 3 Lang:C++ 4 */ 5 #include <cstdio> 6 #include <cstdlib> 7 #include <iostream> 8 #include <cmath> 9 #include <cstring>10 #include <algorithm>11 #include <string>12 #include <vector>13 #include & 阅读全文
posted @ 2012-08-08 13:31 發_ 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 求平面最远点对。朴素的O(n^2)算法显然超时。这里用到了一种旋转卡壳算法,逆时针开始找,找到第一对对踵点(被一对卡壳正好卡住的对应点),那么以后的点也必然是逆时针排列的。找对踵点可以用一条边找另一点使得该三角形面积最大,之后比较边端点与该点距离即可。View Code 1 /* 2 Coder:Zhaofa Fang 3 Lang:C++ 4 */ 5 #include <cstdio> 6 #include <cstdlib> 7 #include <iostream> 8 #include <cmath> 9 #include <cs 阅读全文
posted @ 2012-08-06 22:39 發_ 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 求凸包面积。三角形面积等于叉积的一半~View Code 1 /* 2 Coder:Zhaofa Fang 3 Lang:C++ 4 */ 5 #include <cstdio> 6 #include <cstdlib> 7 #include <iostream> 8 #include <cmath> 9 #include <cstring>10 #include <algorithm>11 #include <string>12 #include <vector>13 #include <q 阅读全文
posted @ 2012-08-06 20:34 發_ 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 凸包周长+圆周长View Code 1 /* 2 Coder:Zhaofa Fang 3 Lang:C++ 4 */ 5 #include <cstdio> 6 #include <cstdlib> 7 #include <iostream> 8 #include <cmath> 9 #include <cstring>10 #include <algorithm>11 #include <string>12 #include <vector>13 #include <queue>14 阅读全文
posted @ 2012-08-06 20:17 發_ 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题意:给定凸多边形上的一些点,问能否唯一确定一个凸多边形(可以加点使之变成另一凸多边形)。分析:凸多边形的相邻两个顶点之间如果没有点,就有可能从外侧加一个点使之变成另一凸多边形,所以相邻两个顶点之间至少要有一个点,即每条边至少三个点。求出凸包的顶点,再枚举每条边的点数就可以了。View Code 1 /* 2 Coder:Zhaofa Fang 3 Lang:C++ 4 */ 5 #include <cstdio> 6 #include <cstdlib> 7 #include <iostream> 8 #include <cmath> 9 #i 阅读全文
posted @ 2012-08-06 18:18 發_ 阅读(124) 评论(0) 推荐(0) 编辑