- 博客(26)
- 收藏
- 关注
原创 搜索:DFS
基本套路:去找所有可能,终止条件,回溯。例题:1.排列数字:给定一个整数 nn,将数字 1∼n1∼n 排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数 nn。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1基本思路:全排列,去找所有可能,对每一种可能进行标记,当到尽头了就往回退一步
2023-01-05 21:53:44
156
原创 练习:P2392 kkksc03考前临时抱佛脚
将所需要消耗的时间累加为sum,假设右脑的容量为sum/2,尽可能的往其中放入题目,使得时间不超过sum/2,该科目所耗时间为sum-dp[sum/2],取耗时较长的那一部分。将一个科目的题目合理分配给左右脑两个部分,使二者时间相差最小,该组题目所耗时长取决于耗时较长的那一部分。
2022-11-25 00:20:23
185
原创 练习:CF1702D. Not a Cheap String
每个例子输入一个字符串与目标值,对字符串进行删减,使其小于等于目标值,将删减后的字符串进行输出。如果目标值大于字符串的值(字符串无法通过删减得到目标值)就直接输出字符串。输入t,接下来t个例子。...
2022-07-15 23:39:00
312
1
原创 搜索:迭代加深
在深度优先搜索当中,是一条路走到底,但是当每个结点元素的分支非常多时,找到目标元素就会浪费很多搜索的时间。则引入层数限制最大搜索层数限制:当限制层数depth=1时,仅进行最大层数为1的深度优先遍历,当达到depth仍未搜索到时则为搜索失败,层数加一再次进行搜索。问:每次层数的增加都要从头再进行搜索,是否会浪费搜索时间?答:例题:170. 加成序列 - AcWing题库题意:序列长度为m;首元素:1,尾元素:n,在首尾之间补充m-2个元素(递增)。限制条件:任..
2022-05-25 23:05:27
227
原创 AcWing 154. 滑动窗口---单调队列
暴力:每次一个数字进入都要对窗口进行遍历得到最大/最小值,时间复杂度为O(n*k)。n为总长度,k为窗口容量。单调队列:以得到最小值为例。当新进入的元素小于队尾,则队尾出队,新元素入队。整个队列呈单调#include <iostream>#include <cstring>#include <algorithm>#include <deque>using namespace std;const int N = 1000010;int a
2022-05-24 23:38:51
256
原创 AcWing 800. 数组元素的目标和
#include <iostream>#include <cstdio>using namespace std;const int N = 1e5 + 10;int a[N], b[N];int main(){ int n,m,x; cin>>n>>m>>x; for (int i = 0; i < n; i ++ ) cin>>a[i]; for (int i =...
2022-05-24 00:15:42
75
原创 ACWing803.区间合并
803. 区间合并 - AcWing题库https://www.acwing.com/problem/content/description/805/思路:使用pair表示每个区间,根据左端点对每个区间进行维护#include <iostream>#include <vector>#include <algorithm>using namespace std ;typedef pair<int,int> pii ;vector<pii&g
2022-05-21 00:27:10
104
原创 图论——Floyd求最短路
多源最短路,查询任意点到另一点的最短路#include <iostream>using namespace std;const int N = 210, M = 2e+10, INF = 1e9;int n, m, k, x, y, z;int d[N][N];void floyd() { for(int k = 1; k <= n; k++) for(int i = 1; i <= n; i++) for(int...
2022-05-18 23:16:17
187
原创 AcWing 836. 合并集合
操作:1.合并两个集合2.询问两个数是否在同一个集合中每个集合用一棵树来表示,树根的编号为集合的编号。每个结点存储他的父结点,p[x]表示x的父结点。将结点的父结点进行存储,每次进行查询时则往往上找,判断是否为根结点,找到所在集合的编号判断所在的集合。问:1.如何判断树根?if(p[x]==x)2.如何求x的集合编号?while(p[x]!=x) x=p[x];3.如何合并两个集合?:将一棵树插到另一棵树上的某个位置上,将被插入的根结点替换为另一棵树的编号。
2022-05-16 23:59:54
167
原创 动态规划:01背包
问题描述:有·一个容量为V的背包,有n个物体。在物体总体积不超过背包当前容量的前提下得到最大的价值。每个物体都有两个属性:体积w(占据背包的空间),价值v。问:如何向背包装物体才能使背包中物体的总价值最大?#include<bits/stdc++.h>using namespace std;const int MAXN = 1005;int v[MAXN]; // 体积int w[MAXN]; // 价值 int f[MAXN][MAXN...
2022-05-14 00:28:36
225
原创 数据结构——字典树Tire
Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串)。优点:最大限度地减少无谓的字符串比较,查询效率比哈希表高。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。输入字符串,在每个字符串的结尾做标记,当输入字符串为:"abc"时,c处无标记,则该该字符串集中不存在"abc"。例题:835. Trie字符串统计 - AcWing题库https://www.acwing.com/probl..
2022-05-12 23:37:59
321
原创 图论:最短路——Bellman-Ford
Bellman-Ford:单源最短路,可存在负权边,任意存储方式。原理为连续进行松弛,在每次松弛时把每条边都更新一下,若在 n-1 次松弛后还能更新,则说明图中有负环,因此无法得出结果,否则就完成。步骤:(与Dijkstra算法类似)1.对n个顶点进行n-1次循环2.对m条边进行m次循环for(k = 1; k <= n - 1; k++) for(i = 1; i <= m; i++) if(dis[v[i]] > dis[u[i]] + w
2022-05-12 22:21:33
120
原创 图论:最短路——堆优化Dijkstra
堆优化Dijkstra:单源最短路(从一个点到其他所有点的最短路)适用于稀疏图(邻接表)。步骤:同朴素版Dijkstra,加入堆进行优化1. 一号点的距离初始化为零,其他点初始化成无穷大。2. 将一号点放入堆中。3. 不断循环,直到堆空。每一次循环中执行的操作为:弹出堆顶(与朴素版diijkstra找到S外距离最短的点相同,并标记该点的最短路径已经确定)。 用该点更新临界点的距离,若更新成功就更新成功就加入到堆中。#include <iostream>#include
2022-05-10 23:09:45
340
原创 图论:最短路——朴素Dijkstra
朴素Dijkstra:单源最短路(从一个点到其他所有点的最短路)适用于稠密图(邻接矩阵)。步骤:1.初始化距离:起点距离为0,其他点距离为正无穷(每个点的距离起点都是不可达到状态)2.迭代:初始状态下每个点都为待定状态(非标记),进行n次迭代,每次去确定一个点到起点的最小值,当该点到起点距离最小值得到确定时,将其加入确定集合(已标记)。并使用该点到起点的距离去更新其他点到起点的距离。思考:如何确点为最小距离?去遍历所有的点,每一次记录最小的距离的点,当遍历结束,则用该点去更新其他点到起点
2022-05-09 20:57:39
125
原创 DFS简单剪枝
165. 小猫爬山 - AcWing题库https://www.acwing.com/problem/content/167/例题一,dfs爆搜,简单剪枝。思路:最坏情况,每一只猫一辆车。dfs函数参数:存储关键的参数1.当前已经放置到哪只猫2.当前已租用多少辆车剪枝优化:1.当当前的车数量大于一咪一车时就果断放弃2.优先搜索分支较少的结点,则将从大到小进行排序,优先考虑大的先去填车,再将小的见缝插针。变量定义:int n,w;//猫数 缆车承重数int cat[
2022-05-08 23:50:28
683
原创 洛谷P1294 高手去散步——DFS
P1294 高手去散步 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1294其实今天是想记录一下Djikstra的,然后打了太久的游戏,明天一定!!!思路:用邻接矩阵记录边的权重,对每个点进行深搜,可以得到搜索树就和使用深搜得到数字的全排列一个意思,额外多加一个变量temp用于记录从当前点出发的最大值。temp=max(temp,sum);将得到的路径与当前的值进行比较,例如路径:1->..
2022-05-06 23:11:32
387
原创 搜索:图的遍历DFS\BFS
P5318 【深基18.例3】查找文献 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)图的存储:邻接表—稀疏图、邻接矩阵—稠密图int n,m;//结点数 边数const int N=100010;//邻接表vector<int>G[N];//标记数组bool mark[N];//队列queue<int>q;/*邻接表:0->1->2 3 42->5 63->74->7 85->6
2022-05-05 22:29:31
317
空空如也
请问如何将大量图片中的数据自动导入到excel的对应表格中
2025-01-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人