摘要: 实现功能——输入N个点,求出按此顺序围成的图形的面积原理:其实就是个向量的叉积运算(详见UASCO-nocow:计算几何),注意二维的叉积是个很逗的东西,叉积这玩意本身就来自于三维向量(HansBug:临睡觉了,水一发呵呵哒,额。。。phile犇不在好寂寞TT) 1 var 2 i,j,k,l... 阅读全文
posted @ 2015-01-20 23:50 HansBug 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 实现功能——对于一个N×M的方格,1:输入一个区域,将此区域全部值作加法;2:输入一个区域,求此区域全部值的和其实和一维线段树同理,只是不知道为什么速度比想象的慢那么多,求解释。。。@acphile(还有代码略恶心,求原谅。。。^_^) 1 const tvp=8000000; 2 var 3 ... 阅读全文
posted @ 2015-01-20 23:42 HansBug 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 实现功能——1:区间开根;2:区间求和(此模板以BZOJ3038为例)作为一个非常规的线段树操作,其tag也比较特殊呵呵哒 1 var 2 i,j,k,l,m,n:longint; 3 a,b:array[0..500000] of int64; 4 function max(x,y:l... 阅读全文
posted @ 2015-01-20 23:38 HansBug 阅读(1020) 评论(0) 推荐(0) 编辑
摘要: 实现功能——1:区间加法;2:区间求和最基础最经典的线段树模板。由于这里面操作无顺序之分,所以不需要向下pushup,直接累积即可 1 var 2 i,j,k,l,m,n,a1,a2,a3,a4:longint; 3 a,b:array[0..100000] of longint; 4 ... 阅读全文
posted @ 2015-01-20 23:22 HansBug 阅读(569) 评论(0) 推荐(0) 编辑
摘要: 实现功能——1:区间覆盖值;2:区间求和相比直接的区间加,这个要注重顺序,因为操作有顺序之分。所以这里面的tag应该有个pushup操作(本程序中的ext) 1 var 2 i,j,k,l,m,n,a1,a2,a3,a4:longint; 3 a,b,d:array[0..100000]... 阅读全文
posted @ 2015-01-20 23:20 HansBug 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 实现功能——1:区间加法 2:区间乘法 3:区间覆盖值 4:区间求和这是个四种常见线段树功能的集合版哦。。。么么哒(其实只要协调好三种tag的关系并不算太难——前提是想明白了线段树的工作模式)代码长度几经修改后也大为缩水还有!!!——通过BZOJ1798反复的尝试,我的出来一个重要结论——尽量减少p... 阅读全文
posted @ 2015-01-20 22:50 HansBug 阅读(567) 评论(0) 推荐(0) 编辑
摘要: 实现功能——操作1:将两个数字合并到一个集合内;操作2:判断两个数字是否在一起第6行是亮点,这个优化能快出不少,真的 1 var 2 i,j,k,l,m,n:longint; 3 c:array[0..100000] of longint; 4 function getfat(x:lon... 阅读全文
posted @ 2015-01-20 21:56 HansBug 阅读(187) 评论(0) 推荐(0) 编辑