POJ
文章平均质量分 71
xiamiwage
这个作者很懒,什么都没留下…
展开
-
POJ 2481 Cows 线段树
//POJ 2481 Cows 线段树 /* 题意:给n条线段(S,E),问每条线段中包含几条线段 线段i包含线段j的定义是Si Ej - Sj 思路: 将线段转化为点,这样问题就转化为问某点的左上方有多少个点 就和POJ 2352 Stars相似了 由于问的是左上方,所以点的排序应先按照y从大到小,再按x从小到大排 照样按x轴建树,同样要注意这里的x从0开始,要处理下 一个要注意的是原创 2012-10-02 23:45:55 · 1578 阅读 · 0 评论 -
POJ 3667 Hotel 线段树 区间合并(成段更新)
//POJ 3667 Hotel 线段树 区间合并(成段更新) /* 题目大意:有n间房子,有两种操作: 1 a:询问是不是有连续长度为a的空房间,有的话住进最左边 2 a b:将[a,a+b-1]的房间清空思路:记录区间中最长的空房间 , 线段树操作: update:区间替换 query:询问满足条件的最左端点 ,线段树每个节点记录 3个参数 : lsum :左端开始的空余量原创 2012-09-23 23:51:02 · 816 阅读 · 0 评论 -
POJ 1195 Mobile phones 线段树 二维线段树 单点更新 区间求和
//POJ 1195 Mobile phones 线段树 二维线段树 单点更新 区间求和 /* 题意: 一个矩阵,初始化为0,两种操作: 1、将某点增加val 2、查询一个子矩阵的和 思路: 二维线段树,单点更新,区间求和,记得pushup. */ #include #include #include #define N 1050 #define lson rt<<1,l,mid #defi原创 2012-10-04 00:23:08 · 904 阅读 · 0 评论 -
POJ 2155 Matrix 二维线段树 奇妙的成段更新 单点查询
//POJ 2155 Matrix 二维线段树 奇妙的成段更新 单点查询 /* 题意: 有一个n*n的矩阵,初始化全部为0。有2中操作; 1、给一个子矩阵,将这个子矩阵里面所有的0变成1,1变成0 2、询问某点的值 思路: 二维线段树,一维线段树的成段更新需要lazy。 引申到二维线段树应该需要一个lazy,一个sublazy,可是这里什么都不用。 奇妙之处在于这题的操作是异或,当某一段区间需要原创 2012-10-03 00:27:05 · 1806 阅读 · 0 评论 -
POJ 3067 Japan 线段树 转化
//POJ 3067 Japan 线段树 转化 /* 题意: 有一幅图,左边m个结点,右边n个结点,给出k条边连接左边结点和右边结点 求这些边相互交叉的个数,一个点只会有两条边经过 思路: 同样将线段转化成点然后放在二维平面图上,对于两条线段[si,ei],[sj,ej] 满足交叉的条件是siej || si>sj&&ei<ej 两条线段如果同起点或者同终点是不会相交的 所以这样就转化为原创 2012-10-02 23:46:10 · 677 阅读 · 0 评论 -
POJ 2352 Stars 线段树 单点更新 成段求和
//POJ 2352 Stars 线段树 单点更新 成段求和 /* 题意:给一系列点(按y递增,y相同时按x递增排列),level指不超过当前点的高度且不在当前点右边的点的个数 求level值分别为0,1,2,..n-1的个数 思路:由于题意已经是按顺序给的点,所以直接按x轴建树 注意x从0开始,线段树从1开始,所以x全部+1处理 */ #include #include #inc原创 2012-10-02 23:45:16 · 750 阅读 · 0 评论 -
POJ 2299 && ZOJ 2386 Ultra-QuickSort 线段树
//POJ 2299 && ZOJ 2386 Ultra-QuickSort 线段树 /* 题意: 给一个序列,序列中的数都不重复,每次可以将序列中的两个数交换, 求将这个序列变成升序序列的最小交换次数 思路: 其实就是求这个序列的逆序数,离散化后边查询边插入即可 注意ans会爆int */ #include #include #include #define lson rt<<1,l,mi原创 2012-10-02 23:46:28 · 1166 阅读 · 0 评论 -
HDOJ 1079 && POJ 1082 Calendar Game (博弈: 暴力枚举所有状态的P\N)
//1079 Calendar Game 博弈 暴力枚举所有状态的P\N,其实网上有非常简单的做法 #include #include #include #include #include using namespace std; bool vis[105][15][35]; int mon[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; struc原创 2012-09-13 23:11:56 · 1448 阅读 · 0 评论 -
POJ 1704 Georgia and Bob (博弈:Staircase Nim)
//POJ 1704 Georgia and Bob (Staircase Nim) /* 题意:有一排的格子从左到右编号为1、2、3...,有n个石子放在上面,每个格子最多只能放一个石子 两个人轮流取石子,每次可以把取的石子往左移。 约束条件:1、不能跨越其他石子 2、不能和其他石子放在同一个格子里面 思路:转化为Staircase Nim 相邻两个石原创 2012-09-13 15:50:47 · 521 阅读 · 0 评论 -
POJ 3264 Balanced Lineup 线段树 单点更新 求区间最值
//POJ 3264 Balanced Lineup 线段树 单点更新 求区间最值 /* 题意: 求区间最大值最小值之差 */ #include #include #include #define INF 100000000 #define N 50005 #define lson rt<<1,l,mid #define rson rt<<1|1,mid+1,r int n,m; int原创 2012-10-04 00:23:33 · 828 阅读 · 0 评论 -
POJ 2029 Get Many Persimmon Trees 二维线段树 单点更新 区间求和
//POJ 2029 Get Many Persimmon Trees 二维线段树 单点更新 区间求和 /* 题意:一个0,1矩阵,在其n*m的子矩阵中找出含有1最多的,输出最多的数量 思路:二维线段树 */ #include #include #include #define N 105 #define lson rt<<1,l,mid #define rson rt<<1|1,mid+1原创 2012-10-03 00:27:40 · 1055 阅读 · 0 评论