08 2019 档案
摘要:题意分析 " HDU 6708 " 题意 :给出一个整数k,要求你输出一个长和宽均为2^k^ 的符合要求的矩阵。比如k等于1时输出 $$ \begin{matrix} C & C \\ P & C \end{matrix} $$k = 2时输出 $$ \begin{matrix} C & C & C
阅读全文
摘要:题意分析 题意 :题目给出n条鱼,以及捕一条鱼所用的时间k,并给出煮每一条鱼的时间,问抓完并煮完所有鱼的最短时间。 " 附题目链接 " 思路 : 1.捕第一条鱼的时间是不可避免的,煮每条鱼的时间也是不可避免的,这些都要算上。 2.可以优化的是煮鱼的时间,在时间允许的范围内可进行捕其他鱼。当然煮鱼的时
阅读全文
摘要:利用叉积计算多边形的面积 我们都知道计算三角形的面积时可以用两个邻边对应向量积(叉积)的绝对值的一半表示,那么同样,对于多边形,我们可以以多边形上的一个点为源点,作过该点并且过多边形其他点中的某一个的多条射线,这样就可以把该多边形变为多个三角形,然后利用叉积求面积即可。 不过要注意,对于三角形可以简
阅读全文
摘要:Kruskal算法讲解 该部分内容全部摘录自刘汝佳的《算法竞赛入门经典》 Kruskal算法的第一步是给所有边按照从小到大的顺序排列。 这一步可以直接使用库函数 qsort或者sort。 接下来从小到大依次考查每条边(u,v)。 情况1: u和v在同一个连通分量中, 那么加入(u, v)后会形成环,
阅读全文
摘要:并查集讲解和模板 有一个博文对此分析的很透彻,附 "链接" 为避免原链接失效,现摘录如下: 为了解释并查集的原理,我将举一个更有爱的例子。 话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲
阅读全文
摘要:Dijkstra算法 分析 Dijkstra算法适用于边权为正的情况。它可用于计算正权图上的单源最短路( Single Source Shortest Paths, SSSP) , 即从单个源点出发, 到 所有 结点的最短路(这样最后返回你想要的那个节点对应的距离即可)。 该算法同时适用于有向图和无
阅读全文
摘要:思路 "题目链接" 题意 :题目中先给了一个N阶矩阵样子的字符,后给了一个mask,然后又给出你应该认识的一些单词,最后是让你输出最终字典序最小的一句话。 思路 :根据题目要求模拟即可。这里会用到stringstream,学习一下。不过个人觉得比较重要的是矩阵旋转部分,下面附这一块的代码。 c vo
阅读全文
摘要:思路 题意 : " 题目 " 为中文题,这里不再过多阐述。 思路1 :可以在读入单词表的过程中将单词分解,用map将它一 一记录 思路2 :利用字典树,这个方法较快些,下面代码中会分别给出数组和结构体指针两种形式的字典树,指针形式的有时可能会因题目内存限制而导致Memory Limit Exceed
阅读全文
摘要:思路 题意 :该题主要说几个同学分别说出自己的名次所处区间,最后输出可能存在的未说谎的人数及对应的学生编号,而且要求字典序最大。 思路 :刚刚接触匈牙利算法,了解的还不太清楚,附一个专门讲解匈牙利算法的 " 博文 " ,个人认为讲的比较清晰。 AC代码 c include include inclu
阅读全文
摘要:思路 题意 :此题大意是指首先给你23个队员的信息,包括他们的名字,能力值,在赛场上的职位。然后给出几个若能满足某两个队员同时在球场上就额外加上一定的值。最后让你从23个队员中选出11个人,使得最终的value最大。 具体思路 :由于从样例中可以发现字符串比较多,加之需要进行姓名和姓名、score之
阅读全文
摘要:题意及思路 " 题目 " 主要是讲先给出所有guard的位置,再给出所有incidents的位置,求出guard到达每个incident处最小的steps,其中guard每次可以向四周8个方向移动。 思路:对于每个guard使用bfs遍历它周围的点,算出相应的点到它的距离。 AC代码 c inclu
阅读全文
摘要:快速幂 如计算 a^b^ ,代码如下: 快速幂代码 快速幂取模: 快速幂: 矩阵快速幂 它可以快速求出斐波那契数列,这里以一个题为例, "Fibonacci POJ 3070" AC代码如下: 参考博客:https://blog.csdn.net/alps1992/article/details/4
阅读全文
摘要:概述 对于求形如 $\sum_{i=1}^{n}\lfloor\frac{n}{i}\rfloor$ 的值,就需要用到整除分块,否则当n很大时就会超时。在普通的一个一个的计算时可以发现很多$\lfloor\frac{n}{i}\rfloor$的值成块状分布, 最终的到的规律是发现对于每一个值相同的块
阅读全文
摘要:问题分析 首先枚举a和b, 把所有a+b记录下来放在一个有序数组,然后枚举c和d, 在有序数组中查一查 c d共有多少个。注意这里不可以直接用二分算法的那个模板,因为那个模板只能查找是否有某个数,一旦找到便退出。利用 "lower_bound,upper_bound" 比较方便,这两个函数就是用二分
阅读全文
摘要:题目思路 将兔子的血量从大到小排列,将箭的属性写在类中(结构体也成),排序按照伤害从大到小排列,若有相等的则按价格从小到大排。 代码 c include using namespace std; int N, M; const int maxn = 100000+10; int b[maxn], d
阅读全文
摘要:介绍 Eratosthenes筛法,又名埃氏筛法,对于求1~n区间内的素数,时间复杂度为n log n,对于10^6^ 以内的数比较合适,再超出此范围的就不建议用该方法了。 筛法的思想特别简单: 对于不超过n的每个非负整数p, 删除2p, 3p, 4p,…, 当处理完所有数之后, 还没有被删除的就是
阅读全文
摘要:扩展欧几里得模板 扩展欧几里德算法——找出一对整数(x,y), 使得ax+by = gcd(a,b)。 注意, 这里的x和y不一定是正数, 也可能是负数或者0。 例如, gcd(6,15)=3, , 其中x=3, y= 1。 这个方程还有其他解, 如x= 2, y=1。 用数学归纳法并不难证明该算法
阅读全文
摘要:归并排序 要想了解归并思想,就离不开对归并排序的理解,从前看别人的代码百思不得其解,后来看到一张图片顿时领悟,附下: 每次比较两个数组,注意可以是一个数组的两个不同的区间,每次将较小的数存储在一个临时数组中,这样就完成了归并排序。当然,前提是这两个数组是有序的,那么,问题是,如何让这两个数组是有序的
阅读全文
摘要:``` std::ios::sync_with_stdio(false); ```
阅读全文
摘要:二分 二分算法模板 注意此模板只适用于查找a中是否存在v,存在的话则返回其中一个符合条件的位置,并不一定只有那一个位置,这个视情况而定。 lower_bound lower_bound()在一个区间内进行二分查找,返回第一个大于等于目标值的位置(地址) upper_bound upper_bound
阅读全文

浙公网安备 33010602011771号