- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 2021-03-11博客5->前缀和运用
前缀和 前缀和思想较为简单 但其中部分仍需记忆 + 理解! 特别是部分式子对后面的差分数组有很大影响针对后面 一维数组前缀和(简单的不能再简单了): 输入一个长度为 n 的整数序列。 接下来再输入 m 个询问,每个询问输入一对 l,r。 对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。 输入格式 第一行包含两个整数 n 和 m。 第二行包含 n 个整数,表示整数数列。 接下来 m 行,每行包含两个整数 l 和 r,表示一个询问的区间范围。 输出格式 共m行,每行输出一个询问的结果。 数据范围 1
2021-03-12 15:16:18 98
原创 2021-03-07博客4->二分
二分 二分的思路具体如下: (1)首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。 (2)如果目标元素大于/小于中间元素,则在数组大于(小于)中间元素的那一半区域查找,然后重复步骤(1)的操作。 (3)如果某一步数组为空,则表示找不到目标元素。 二分的时间复杂度为O(logn) 上题目 第一题: 给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。 对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。 如果数组中不存在该元素,则返回“-1
2021-03-07 17:04:09 81
原创 2021-03-05博客3->归并排序
归并排序 主要还是体现的分治思想,将数据先拆分n组在进行组合。 同时也得利用到递归回溯的思想 归并排序和快速排序时间复杂度均为nlogn 上题 第一题:(同快排一样的题用归并排序来写) 给定你一个长度为n的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。 输出格式 输出共一行,包含 n 个整数,表示排好序的数列。 数据范围 1≤n≤100000 输入样
2021-03-05 19:26:33 190
原创 2021-03-03博客2->快速排序
排序之快速排序(快排) 快速排序是AcWing中y老师讲的一种在数据较大的情况下,程序运行速度比sort还快的一种写法(模板一定要牢记) 快速排序的基本思想是: 先从数列中取出一个数作为基准数(一般取中间数,免除边界问题,或测试数据加强) 取两个指针从数组两个方向运动(i与j),与基准数进行比较,如若比较成功(即下方代码),则i与j互换,最后将其分成两个区域 再对左右区间重复第二步,直到各区间只有一个数(即递归) 具体题目: 给定你一个长度为n的整数数列。 请你使用快速排序对这个数列按照从小
2021-03-03 22:59:39 138 4
原创 2021-01-01博客1->广度搜索BFS与队列 题①
算法之BFS广度搜索 题目以及文章采用南阳理工学院举办新生创新大赛题。 代码有待优化,体现出BFS思想,但时间复杂度较高。 会超时。#include<bits/stdc++.h> using namespace std; char a[1005][1005]; int start_x,start_y; int book[1005][1005]; int n,m; int time1 = 0; int point[4][2]= {{1,0},{0,1},{-1,0},{0,-1}}; struct
2021-01-01 20:56:13 150 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人