摘要:
初看树状数组的概念以及定义,还料想不算太复杂,不愧是线段树的的阉割版本,用起来省时省事,复杂度还底。简直称得上要多爽就又多爽呀。树状数组一般适用于三类问题:1,修改一个点求一个区间2,修改一个区间求一个点3,求逆序列对要介绍树状数组,先po上他最直观的图,便于理解。不难看出以下规律:c1=a1c2=... 阅读全文
摘要:
本周集训专题为DP系列,一个经典的系列便是石子归并问题。(1)有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动相邻的2堆石子合并,合并花费为新合成的一堆石子的数量。求将这N堆石子合并成一堆的总花费最小(或最大)。这是石子归并的简化版本,石子处于一排。由于发现只能是相邻的2堆石子进行归并... 阅读全文
摘要:
今日集训第一日,遇到了判断线段相交问题。跟面积问题一样,这个同样可以用叉积来解决。数学原理证明:首先引出计算几何学中一个最基本的问题:如何判断向量在的顺时针方向还是逆时针方向?把p0定为原点,p1的坐标是(x1,y1),p2的坐标是(x2,y2)。向量的叉积(cross product)实际上就是矩... 阅读全文
摘要:
近日学习了归并排序(Merge Sort), 经典的分治思想的运用:将一个大的问题分解成为若干个小问题,通过解决这些小问题从而将整个问题解决。在算法中运用十分普遍。而归并排序则是将整个数组不断二分,直到将每个数组分成只有一个元素,再通过Merge操作将这些小数组不断归并,成一个大的数组。归并排序较之... 阅读全文
摘要:
今日学习了控制台使用句柄操作的方法。我们都知道,使用iostream也可以向屏幕中输出语句。但它们只能实现基本的输入输出 操作,对于控制台窗口界面的控制却无能为力,而且不能与stdio.h和conio.h友好相处,因为iostream和它们是C++两套不同的输入。因此,我们需要句柄类来帮助我们完成这... 阅读全文
摘要:
近日学习了Shell Sort,也就是希尔排序,也称递减增量排序算法。在1959年由DL.Shell提出于1959年提出,由此得名。此版本算法是在插入排序(Insertion Sort)基础上,将数组分成了h份(gap).也就是在数组中每隔h个数取出一个数,为一个子数组。先在子数组上进行排序,然后不... 阅读全文
摘要:
游荡知乎这么久,甚是仰慕V神。遂开始造轮子之路,由于新手实力较菜。顾从简单的大整数的入门。功能实现分析:1. 能用字符串, 长整型(long long or _int64)构造出此BigInteger.2. 具有正负数之分(整这个整了好一会)3. 实现基本运算 (c... 阅读全文
摘要:
此题初识欧拉公式 V - E + F = 2.其中V是顶点(即所有线段的断点数加上交点数),E是边数(即n段椭圆弧加上这些线段被切成的段数),F是面数(即土地块数加上椭圆外那个无穷大的面)。-------------------------------------------------------... 阅读全文
摘要:
果园里的树排列成矩阵。他们的x和y的坐标均是1~99的整数。输入若干个三角形,依次统计每个三角形内部和边界上共有多少棵树。输入:1.5 1.5 1.5 6.8 6.8 1.510.7 6.9 8.5 1.5 14.5 1.5此题用三角形有向面积来解,求有向面积2倍的函数为:doub... 阅读全文
摘要:
近几日学习了二叉查找树(BinarySearchTree),既BST。在算法(Algorithm4thEdtion)中是为了实现更高性能的ST(符号表)而进行的深入讲解的。这是我第一次明显的感受到因为算法改进而带来大幅度的性能提升。由于在日常数据处理中,符号表不仅需要根据Key索引,还要进行大量的新... 阅读全文