算法竞赛
兴趣是最好的老师
@云烟成雨
这个作者很懒,什么都没留下…
展开
-
数论-hdu3117题解
题目链接题目大意:输出 Fibonacci 数列的第 n 项 an,如果 an 位数 ≤8 ,否则按格式“高四位…低四位”输出。分析:注意点:题目给的 n 的范围是 [0, 108] ,直接使用递推的方式求 an 会超时,并且数值超出了表示范围(C++)。首先Fibonacci 数列的 0~39 项的位数都是在 8 位以内的,如果不知道,可以观察测试用例,a39 对应 63245986 , a40 对应 1023…4155 。所以,对于 0~39 项,可以通过递推公式先打表。然后,先考虑取出高四位原创 2020-06-27 20:00:04 · 298 阅读 · 0 评论 -
蓝桥练习题:芯片测试
芯片测试:统计题目:本题的考察点是统计的知识。这样考虑一下:对芯片A,如果它是“好的”,一方面,所有坏的芯片对A的检测结果好坏各占50%,另一方面,所有好的芯片对A的检测结果都是“好的”,题意一开始也说了,芯片有好有坏,并且好芯片比坏芯片多,那么综合起来,A被检测的结果是“好的”的概率>=50%对芯片A,如果它是“坏的”,一方面,所有坏的芯片对A的检测结果好坏各占50%,另一方面,...原创 2020-04-13 21:36:24 · 217 阅读 · 0 评论 -
二维树状数组
二维树状数组二维树状数组二维树状数组实质上是一维树状数组的扩充。二维树状数组的定义为:C[x] [y] = ∑ a[i][j] , (x -= lowbit(x), y -= lowbit(y), 1≤ i ≤x, 1≤ j ≤y) 。当 x=1 时,就变成了 C[1] [y] = ∑ a[1][j] , ( y -= lowbit(y), 1≤ j ≤y) 。通过固定 x 的值,就将...原创 2020-02-25 22:03:48 · 649 阅读 · 0 评论 -
POJ-2352-Stars题解(树状数组 or 线段树)
Stars传送门:Stars题意将星空看做一个平面,在平面上建立直角坐标系,这样在这个平面上的每个星星都有一个坐标。天文学家定义了一个星星的水平:一个星星的水平就是,在这个星星正左边的星星、正下方的星星以及左下方的星星数目之和,就是这个星星的水平。输入:N代表要输入的星星的个数。接下来的 N 行,每行两个整数 x 和 y ,代表这个星星的横纵坐标。这里在输入时有一个规则,就是按照 y ...原创 2020-02-22 21:00:12 · 267 阅读 · 0 评论 -
POJ-2182-Lost Cows题解(树状数组 or 线段树)
Lost Cows题目传送门题意FJ有n头牛,编号 1~n ,但是这些牛并没有按照编号排队,但是 FJ 知道每头牛前面有几头编号比这头牛编号小,现在问你每头牛的编号。题解从最后一头牛开始,其它牛都已经在队列里,假如这头牛前面有 x 头牛编号比它小,那么这头牛就是编号第 x 小(按编号从小到大排序)的牛的编号加一。知道了这头牛的编号,就可以把这头牛从队列中赶走了,因为有没有它都不会...原创 2020-02-22 18:42:50 · 483 阅读 · 0 评论 -
基本算法思想之贪心算法
贪心算法基本概念概念所谓贪心算法,就是把整个问题分解成多个步骤,在每个步骤都选取当前步骤的最佳方案,知道所有步骤结束。对每一步骤,既不考虑之前步骤对当前步骤的影响,也不考虑当前步骤对后续步骤的影响,只需要选出当前步骤的最佳方案。简单来说,就是走一步看一步,只考虑当前的状况。应用了解了贪心算法的概念,下面我们来以最少硬币问题为例,介绍一下贪心算法的应用规则和局限性。话说有一个人,他带着...原创 2020-02-20 20:37:33 · 300 阅读 · 0 评论 -
树状数组(BIT)
树状数组入门(Binary Indexed Tree)树状数组是一种利用数的二进制特征进行检索的树状结构。是一种高效地对一个数字的列表进行更新及求前缀和的数据结构。树状数组在学习树状数组前,先看一下树状数组的结构:A[n] 数组是原数组tree[n] 数组就是树状数组,包含如下关系:tree[1] = A[1] tree[2] = A[1]+A[2]tre...原创 2020-02-11 18:47:39 · 427 阅读 · 0 评论 -
差分数组(HackerRank Array Manipulation)
差分数组(HackerRank Array Manipulation)学过树状数组之后,比较线段树,我们想有没有一种与树状数组相关的能够达到快速进行区间更新的方法,这就是差分数组。差分数组可以只通过修改区间端点值达到区间修改的目的,同时结合树状数组,可以达到快速单点查询的目的。定义对于已知有n个元素的离线数列A,我们可以建立记录它每项与前一项差值的差分数组F,显然,F[1] = A[1...原创 2020-02-11 18:45:07 · 1776 阅读 · 0 评论 -
线段树入门
文章目录线段树入门线段树入门了解线段树线段树是一种二叉搜索树,它将一个区间划分成一些较小的区间,最终划分成单元区间,每个单元区间对应线段树中的一个叶结点,表示线段上一个点。如下图。为什么要使用线段树首先,先知道在线段树上进行的操作复杂度是 O(logn)。现在,用最朴朴素的方式,在一个一维数组 a[n] 中,我们要修改某一个点的值时,比如将原数组中 a[3]=3 改成 a[3...原创 2020-02-06 11:55:30 · 456 阅读 · 1 评论 -
并查集
概述并查集是一种数据结构,主要处理一些不相交的集合的合并问题。就是集合的合并操作。经典的例子有:连通子图、最小生成树Kruskal算法和最近公共祖先等。并查集主要操作有初始化、合并、查询。优化合并优化:在合并两个不同集合的元素时,需要找到他们的根结点,将根结点合并。在合并的时候将高度较小的树合并在高度较高的树下,能有效减小树的高度,有利于查询。路径压缩:在直接进行简单合并的情况下,...原创 2019-12-09 20:48:24 · 410 阅读 · 0 评论 -
深度优先搜索(DFS)
概要从初始状态出发,下一步可能有多种情况,选择其中一种情况进行深入,达到新的状态,直到无法继续深入,回退到上一步,选择其他状态继续深入。最后遍历完所有的状态。BFS依靠栈实现。...原创 2019-12-08 22:33:28 · 434 阅读 · 0 评论 -
宽度优先搜索(广度优先搜索&&BFS)
BFSBFS概要BFS是一项基本的暴力搜索技术,常用于解决图和树的遍历问题。BFS类似逐层遍历,其实现依托队列。可以应用在走迷宫、寻找最短路径等问题上。注意点1.标记。搜索的时候要及时标记,避免重复访问。2.剪枝。搜索的时候判断搜索方向是否合理,不能达到目的的搜索方向及时终止,否则容易超时。3....原创 2019-12-08 09:46:13 · 286 阅读 · 0 评论 -
STL
1.容器STL容器包含顺序式容器和关联式容器两类。顺序式容器特点vector动态数组,从末尾了以快速插入与删除,直接访问任何元素list双链表,从任何地方快速插入与删除deque双向队列,从前面或后面快速插入与删除,直接访问任何元素queue队列,先进先出priority_queue优先队列,最高优先级元素总是第一个出列stack栈...原创 2019-11-03 19:33:26 · 213 阅读 · 0 评论